Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


meshchatx/src/frontend/components/interfaces/AddInterfacePage.vue b960db2e8bf87b96c14f6421402a16798d7a9ded (b960db2e) Text, 236.09 KB

T8b949e<!-- SPDX-License-Identifier: 0BSD AND MIT -->

Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col flex-1 overflow-hidden min-w-0 bg-slate-50 dark:bg-zinc-950"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"overflow-y-auto flex-1 min-h-0"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-full max-w-[1920px] mx-auto px-4 md:px-5 lg:px-8 py-4 md:py-6 lg:py-8 space-y-6"Tb4b4b4>
T8b949e<!-- Header Section -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col sm:flex-row sm:items-center justify-between gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72h1 Te6edf3classTff7b72=Ta5d6ff"text-2xl font-bold text-gray-900 dark:text-white flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3isEditingInterface Tff7b72? Ta5d6ff'pencil' Tff7b72: Ta5d6ff'plus-circle-outline'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-7 text-blue-500"
Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3isEditingInterface Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.edit_interface"Tb4b4b4) Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.add_interface"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h1Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-600 dark:text-zinc-400 mt-1"Tb4b4b4>
Tff7b72{{
Te6edf3isEditingInterface
Tff7b72? Ta5d6ff"Update existing connection settings."
Tff7b72: Ta5d6ff"Create a new connection to the Reticulum network."
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex gap-2 shrink-0"Tb4b4b4>
Tb4b4b4<Tff7b72RouterLink Tb4b4b4:Te6edf3toTff7b72=Ta5d6ff"Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff'interfaces' Tb4b4b4}Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"secondary-chip"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"arrow-left" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Back to List
Tb4b4b4<Tb4b4b4/Tff7b72RouterLinkTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col-reverse gap-8 xl:flex-row xl:items-start xl:gap-10"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 min-w-0 space-y-6 xl:max-w-4xl 2xl:max-w-5xl"Tb4b4b4>
T8b949e<!-- Main Form Card -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-card space-y-8"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 lg:grid-cols-2 gap-8"Tb4b4b4>
T8b949e<!-- Basic Info Column -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-6"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 pb-2 border-b border-gray-100 dark:border-zinc-800"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"information-outline"
Te6edf3classTff7b72=Ta5d6ff"size-5 text-gray-400"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"font-bold text-gray-900 dark:text-white"Tb4b4b4>Basic ConfigurationTb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Interface NameTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceNameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3isEditingInterfaceTa5d6ff"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g. Home Node or Mobile TCP"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[Te6edf3isEditingInterface Tff7b72? Ta5d6ff'cursor-not-allowed opacity-60' Tff7b72: Ta5d6ff''Tb4b4b4]Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Transport TypeTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>

T8b949e<!-- Visual Transport Selection -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3type Tff7b72in Tb4b4b4[
Tb4b4b4{
Te6edf3idTff7b72: Ta5d6ff'TCPClientInterface'Tb4b4b4,
Te6edf3nameTff7b72: Ta5d6ff'TCP Client'Tb4b4b4,
Te6edf3iconTff7b72: Ta5d6ff'lan-connect'Tb4b4b4,
Te6edf3colorTff7b72: Ta5d6ff'text-blue-500'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Te6edf3idTff7b72: Ta5d6ff'BackboneInterface'Tb4b4b4,
Te6edf3nameTff7b72: Ta5d6ff'Backbone'Tb4b4b4,
Te6edf3iconTff7b72: Ta5d6ff'transit-connection-variant'Tb4b4b4,
Te6edf3colorTff7b72: Ta5d6ff'text-sky-500'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Te6edf3idTff7b72: Ta5d6ff'TCPServerInterface'Tb4b4b4,
Te6edf3nameTff7b72: Ta5d6ff'TCP Server'Tb4b4b4,
Te6edf3iconTff7b72: Ta5d6ff'server-network'Tb4b4b4,
Te6edf3colorTff7b72: Ta5d6ff'text-indigo-500'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Te6edf3idTff7b72: Ta5d6ff'UDPInterface'Tb4b4b4,
Te6edf3nameTff7b72: Ta5d6ff'UDP'Tb4b4b4,
Te6edf3iconTff7b72: Ta5d6ff'broadcast'Tb4b4b4,
Te6edf3colorTff7b72: Ta5d6ff'text-cyan-500'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Te6edf3idTff7b72: Ta5d6ff'RNodeInterface'Tb4b4b4,
Te6edf3nameTff7b72: Ta5d6ff'RNode (LoRa)'Tb4b4b4,
Te6edf3iconTff7b72: Ta5d6ff'radio-handheld'Tb4b4b4,
Te6edf3colorTff7b72: Ta5d6ff'text-emerald-500'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Te6edf3idTff7b72: Ta5d6ff'I2PInterface'Tb4b4b4,
Te6edf3nameTff7b72: Ta5d6ff'I2P Tunnel'Tb4b4b4,
Te6edf3iconTff7b72: Ta5d6ff'tunnel'Tb4b4b4,
Te6edf3colorTff7b72: Ta5d6ff'text-purple-500'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Te6edf3idTff7b72: Ta5d6ff'SerialInterface'Tb4b4b4,
Te6edf3nameTff7b72: Ta5d6ff'Serial (Generic)'Tb4b4b4,
Te6edf3iconTff7b72: Ta5d6ff'serial-port'Tb4b4b4,
Te6edf3colorTff7b72: Ta5d6ff'text-amber-500'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Te6edf3idTff7b72: Ta5d6ff'KISSInterface'Tb4b4b4,
Te6edf3nameTff7b72: Ta5d6ff'KISS (TNC)'Tb4b4b4,
Te6edf3iconTff7b72: Ta5d6ff'radio-tower'Tb4b4b4,
Te6edf3colorTff7b72: Ta5d6ff'text-orange-500'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Te6edf3idTff7b72: Ta5d6ff'AutoInterface'Tb4b4b4,
Te6edf3nameTff7b72: Ta5d6ff'Auto (Local)'Tb4b4b4,
Te6edf3iconTff7b72: Ta5d6ff'auto-fix'Tb4b4b4,
Te6edf3colorTff7b72: Ta5d6ff'text-pink-500'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Te6edf3idTff7b72: Ta5d6ff'HTTPInterface'Tb4b4b4,
Te6edf3nameTff7b72: Ta5d6ff'HTTP Tunnel'Tb4b4b4,
Te6edf3iconTff7b72: Ta5d6ff'web'Tb4b4b4,
Te6edf3colorTff7b72: Ta5d6ff'text-teal-500'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3typeTb4b4b4.Te6edf3idTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"flex flex-col items-center justify-center p-3 rounded-2xl border transition-all duration-200 text-center gap-1 group"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[
Te6edf3newInterfaceType Tff7b72=== Te6edf3typeTb4b4b4.Te6edf3id
Tff7b72? Ta5d6ff'bg-blue-500/10 border-blue-500 ring-1 ring-blue-500/50'
Tff7b72: Ta5d6ff'bg-gray-50/50 dark:bg-zinc-800/30 border-gray-100 dark:border-zinc-800 hover:border-gray-300 dark:hover:border-zinc-600'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72= Te6edf3typeTb4b4b4.Te6edf3idTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3typeTb4b4b4.Te6edf3iconTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-6 transition-transform group-hover:scale-110"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[
Te6edf3newInterfaceType Tff7b72=== Te6edf3typeTb4b4b4.Te6edf3id Tff7b72? Ta5d6ff'text-blue-500' Tff7b72: Te6edf3typeTb4b4b4.Te6edf3colorTb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold uppercase tracking-tight"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[
Te6edf3newInterfaceType Tff7b72=== Te6edf3typeTb4b4b4.Te6edf3id
Tff7b72? Ta5d6ff'text-blue-700 dark:text-blue-400'
Tff7b72: Ta5d6ff'text-gray-600 dark:text-zinc-400'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3typeTb4b4b4.Te6edf3name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Fallback/More select for less common types -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mt-3"Tb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceTypeTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field appearance-none pr-10 py-1.5! text-[11px]! opacity-70 hover:opacity-100"
Tb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Tff7b72nullTa5d6ff"Tb4b4b4>More options...Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"AX25KISSInterface"Tb4b4b4>AX.25 KISS (Amateur Radio)Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"LocalInterface"Tb4b4b4>Local Interface (Loopback)Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"PipeInterface"Tb4b4b4>Pipe Interface (External)Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"RNodeIPInterface"Tb4b4b4>RNode over IPTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"BackboneInterface"Tb4b4b4>Backbone (public relay)Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"__external__"Tb4b4b4>
Custom / external module (RNS interfacepath)
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Dynamic Interface Specific Settings Column -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-6"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 pb-2 border-b border-gray-100 dark:border-zinc-800"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"cog-outline" Te6edf3classTff7b72=Ta5d6ff"size-5 text-gray-400" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"font-bold text-gray-900 dark:text-white"Tb4b4b4>Connection DetailsTb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- No selection placeholder -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3newInterfaceTypeTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"h-48 flex flex-col items-center justify-center text-center p-6 border-2 border-dashed border-gray-100 dark:border-zinc-800 rounded-3xl"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"arrow-left-bold"
Te6edf3classTff7b72=Ta5d6ff"size-10 text-gray-200 dark:text-zinc-800 animate-bounce-left"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-400 dark:text-zinc-600 mt-2"Tb4b4b4>
Select an interface type to configure connection settings.
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Interface Specific Fields -->
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"space-y-6 animate-in fade-in slide-in-from-right-4 duration-300"Tb4b4b4>
T8b949e<!-- TCP Client -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'TCPClientInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Target HostTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceTargetHostTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g. 1.2.3.4 or example.com"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Target PortTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceTargetPortTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"4242"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle
Te6edf3idTff7b72=Ta5d6ff"tcp-kiss-framing"
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceKISSFramingEnabledTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3forTff7b72=Ta5d6ff"tcp-kiss-framing" Te6edf3classTff7b72=Ta5d6ff"cursor-pointer mb-0! text-sm"
Tb4b4b4>Use KISS framing (legacy compatibility)Tb4b4b4<Tb4b4b4/Tff7b72FormLabel
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle
Te6edf3idTff7b72=Ta5d6ff"tcp-i2p-tunneled"
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceI2PTunnelingEnabledTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3forTff7b72=Ta5d6ff"tcp-i2p-tunneled" Te6edf3classTff7b72=Ta5d6ff"cursor-pointer mb-0! text-sm"
Tb4b4b4>I2P Tunneled (target is an I2P b32)Tb4b4b4<Tb4b4b4/Tff7b72FormLabel
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-start gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"tcp-bootstrap-only" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceBootstrapOnlyTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel
Te6edf3forTff7b72=Ta5d6ff"tcp-bootstrap-only"
Te6edf3classTff7b72=Ta5d6ff"cursor-pointer mb-0! text-sm block"
Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.discovery_default_bootstrap_only"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabel
Tb4b4b4>
Tb4b4b4<Tff7b72BundledDocsHint
Te6edf3paragraph-classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-400 mt-0.5"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-3 gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Connect Timeout (s)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceConnectTimeoutTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3placeholderTff7b72=Ta5d6ff"default"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Max Reconnect TriesTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceMaxReconnectTriesTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3placeholderTff7b72=Ta5d6ff"default"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Fixed MTUTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceFixedMTUTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Tb4b4b4:Te6edf3minTff7b72=Ta5d6ff"Te6edf3reticulumMinFixedMtuTa5d6ff"
Te6edf3placeholderTff7b72=Ta5d6ff"auto"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"mt-1 text-xs text-gray-500 dark:text-zinc-400"Tb4b4b4>
Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.fixed_mtu_hint"Tb4b4b4, Tb4b4b4{
Te6edf3minTff7b72: Te6edf3reticulumMinFixedMtuTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'BackboneInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle
Te6edf3idTff7b72=Ta5d6ff"backbone-listen-mode"
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceBackboneListenModeTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel
Te6edf3forTff7b72=Ta5d6ff"backbone-listen-mode"
Te6edf3classTff7b72=Ta5d6ff"cursor-pointer mb-0! text-sm"
Tb4b4b4>Listener mode (host this backbone)Tb4b4b4<Tb4b4b4/Tff7b72FormLabel
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3newInterfaceBackboneListenModeTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Remote hostTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceTargetHostTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g. example.com or 1.2.3.4"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Target portTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceTargetPortTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"4242"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.backbone_transport_identity_label"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceTransportIdentityTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"
Te6edf3$tTb4b4b4(Ta5d6ff'interfaces.backbone_transport_identity_placeholder'Tb4b4b4)
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field font-mono text-xs"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-400 mt-1"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.backbone_transport_identity_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-start gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle
Te6edf3idTff7b72=Ta5d6ff"backbone-bootstrap-only"
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceBootstrapOnlyTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel
Te6edf3forTff7b72=Ta5d6ff"backbone-bootstrap-only"
Te6edf3classTff7b72=Ta5d6ff"cursor-pointer mb-0! text-sm block"
Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.discovery_default_bootstrap_only"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabel
Tb4b4b4>
Tb4b4b4<Tff7b72BundledDocsHint
Te6edf3paragraph-classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-400 mt-0.5"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"
Tb4b4b4>Listen IP (optional if Device is set)Tb4b4b4<Tb4b4b4/Tff7b72FormLabel
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceBackboneListenIpTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"0.0.0.0"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Listen PortTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceBackboneListenPortTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"4242"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Device (optional)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceBackboneListenDeviceTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Kernel interface e.g. eth0, wlan0"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"
Te6edf3hostKernelInterfacesLoading Tff7b72||
Te6edf3hostKernelInterfacesTb4b4b4.Te6edf3length Tff7b72||
Te6edf3hostKernelInterfacesUnavailable
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"rounded-xl border border-gray-100 dark:border-zinc-800 bg-gray-50/50 dark:bg-zinc-900/30 p-3 space-y-2"
Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-600 dark:text-zinc-400"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.kernel_iface_picker_title"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3hostKernelInterfacesLoadingTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-400"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.kernel_iface_loading"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-1.5 max-h-36 overflow-y-auto"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3iface Tff7b72in Te6edf3hostKernelInterfacesTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ff'bb-' Tff7b72+ Te6edf3ifaceTb4b4b4.Te6edf3nameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"px-2.5 py-1.5 text-left text-xs rounded-lg border border-gray-200 dark:border-zinc-700 bg-white/90 dark:bg-zinc-900/90 hover:border-blue-400 dark:hover:border-blue-500 transition-colors max-w-full"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3newInterfaceBackboneListenDevice Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3nameTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"font-mono font-medium text-gray-900 dark:text-zinc-100"
Tb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3name Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3ifaceTb4b4b4.Te6edf3addresses Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3addressesTb4b4b4.Te6edf3lengthTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"block text-[10px] text-gray-500 dark:text-zinc-500 truncate max-w-[20rem]"
Tb4b4b4>Tff7b72{{
Te6edf3ifaceTb4b4b4.Te6edf3addressesTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff3Tb4b4b4)Tb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff" \u00b7 "Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72p
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3hostKernelInterfacesUnavailableTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-xs text-amber-600 dark:text-amber-500"
Tb4b4b4>
Tff7b72{{ Te6edf3hostKernelInterfacesUnavailable Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-500"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.kernel_iface_picker_help"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle
Te6edf3idTff7b72=Ta5d6ff"backbone-listen-ipv6"
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfacePreferIPV6Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel
Te6edf3forTff7b72=Ta5d6ff"backbone-listen-ipv6"
Te6edf3classTff7b72=Ta5d6ff"cursor-pointer mb-0! text-sm"
Tb4b4b4>Prefer IPv6Tb4b4b4<Tb4b4b4/Tff7b72FormLabel
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"rounded-xl border border-gray-100 dark:border-zinc-800 bg-gray-50/50 dark:bg-zinc-900/30 p-3 space-y-3"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-start justify-between gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label mb-0!"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.block_fast_flapping_label"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-400 mt-1"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.block_fast_flapping_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceBlockFastFlappingTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 md:grid-cols-3 gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.fast_flapping_block_time_label"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3newInterfaceFastFlappingBlockTimeTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"1"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.fast_flapping_threshold_label"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3newInterfaceFastFlappingThresholdTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0.1"
Te6edf3stepTff7b72=Ta5d6ff"0.1"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.fast_flapping_grace_label"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3newInterfaceFastFlappingGraceTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- TCP Server / UDP -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tb4b4b4[Ta5d6ff'TCPServerInterface'Tb4b4b4, Ta5d6ff'UDPInterface'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3newInterfaceTypeTb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"space-y-4"
Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Listen IPTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceListenIpTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"0.0.0.0"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Te6edf3required
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Listen PortTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceListenPortTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"4242"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Device (optional)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceNetworkDeviceTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g. eth0 (real OS interface, leave empty to use Listen IP only)"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"
Te6edf3hostKernelInterfacesLoading Tff7b72||
Te6edf3hostKernelInterfacesTb4b4b4.Te6edf3length Tff7b72||
Te6edf3hostKernelInterfacesUnavailable
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"rounded-xl border border-gray-100 dark:border-zinc-800 bg-gray-50/50 dark:bg-zinc-900/30 p-3 space-y-2"
Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-600 dark:text-zinc-400"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.kernel_iface_picker_title"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3hostKernelInterfacesLoadingTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-400"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.kernel_iface_loading"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-1.5 max-h-36 overflow-y-auto"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3iface Tff7b72in Te6edf3hostKernelInterfacesTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ff'srv-' Tff7b72+ Te6edf3ifaceTb4b4b4.Te6edf3nameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"px-2.5 py-1.5 text-left text-xs rounded-lg border border-gray-200 dark:border-zinc-700 bg-white/90 dark:bg-zinc-900/90 hover:border-blue-400 dark:hover:border-blue-500 transition-colors max-w-full"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3newInterfaceNetworkDevice Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3nameTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"font-mono font-medium text-gray-900 dark:text-zinc-100"
Tb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3name Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3ifaceTb4b4b4.Te6edf3addresses Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3addressesTb4b4b4.Te6edf3lengthTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"block text-[10px] text-gray-500 dark:text-zinc-500 truncate max-w-[20rem]"
Tb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3addressesTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff3Tb4b4b4)Tb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff" \u00b7 "Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72p
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3hostKernelInterfacesUnavailableTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-xs text-amber-600 dark:text-amber-500"
Tb4b4b4>
Tff7b72{{ Te6edf3hostKernelInterfacesUnavailable Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-500"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.kernel_iface_picker_help"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'TCPServerInterface'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap items-center gap-4"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"tcp-server-ipv6" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfacePreferIPV6Ta5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel
Te6edf3forTff7b72=Ta5d6ff"tcp-server-ipv6"
Te6edf3classTff7b72=Ta5d6ff"cursor-pointer mb-0! text-sm"
Tb4b4b4>Prefer IPv6Tb4b4b4<Tb4b4b4/Tff7b72FormLabel
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle
Te6edf3idTff7b72=Ta5d6ff"tcp-server-i2p"
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceI2PTunnelingEnabledTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3forTff7b72=Ta5d6ff"tcp-server-i2p" Te6edf3classTff7b72=Ta5d6ff"cursor-pointer mb-0! text-sm"
Tb4b4b4>I2P TunneledTb4b4b4<Tb4b4b4/Tff7b72FormLabel
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- UDP Extras -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'UDPInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Forward IPTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceForwardIpTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"255.255.255.255"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Forward PortTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceForwardPortTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"4242"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- I2P Interface -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'I2PInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-amber-50/80 dark:bg-amber-900/20 p-3 rounded-2xl border border-amber-200 dark:border-amber-800/40 text-xs text-amber-900 dark:text-amber-200 space-y-1"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-semibold"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.i2p_requirements_title"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72pTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.i2p_requirements_body"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-blue-50/50 dark:bg-blue-900/10 p-3 rounded-2xl border border-blue-100 dark:border-blue-900/20 text-xs text-blue-800 dark:text-blue-300"
Tb4b4b4>
To use the I2P interface, you must have an I2P router running on your
system with SAM enabled.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3transportEnabledTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-red-50/80 dark:bg-red-900/20 p-3 rounded-2xl border border-red-200 dark:border-red-800/40 text-xs text-red-800 dark:text-red-200"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.i2p_transport_required"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3hasExistingI2PInterface Tff7b72&& Tff7b72!Te6edf3isEditingInterfaceTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-red-50/80 dark:bg-red-900/20 p-3 rounded-2xl border border-red-200 dark:border-red-800/40 text-xs text-red-800 dark:text-red-200"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.i2p_already_exists"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"i2p-connectable" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceConnectableTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3forTff7b72=Ta5d6ff"i2p-connectable" Te6edf3classTff7b72=Ta5d6ff"cursor-pointer mb-0! text-sm"
Tb4b4b4>Allow incoming peers (connectable)Tb4b4b4<Tb4b4b4/Tff7b72FormLabel
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Initial Peers (Optional)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Tb4b4b4(Te6edf3peerTb4b4b4, Te6edf3indexTb4b4b4) Tff7b72in Te6edf3I2PSettingsTb4b4b4.Te6edf3newInterfacePeersTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3indexTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3I2PSettingsTb4b4b4.Te6edf3newInterfacePeersTb4b4b4[Te6edf3indexTb4b4b4]Ta5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"b32.i2p address"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-red-500 hover:text-red-400 p-1"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3removeI2PPeerTb4b4b4(Te6edf3indexTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"trash-can-outline"
Te6edf3classTff7b72=Ta5d6ff"size-5"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip py-1! px-3! text-[10px]!"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3addI2PPeerTb4b4b4(Ta5d6ff''Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"plus" Te6edf3classTff7b72=Ta5d6ff"size-3" Tb4b4b4/Tb4b4b4> Add Peer
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- RNode / Hardware -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"
Tb4b4b4[
Ta5d6ff'RNodeInterface'Tb4b4b4,
Ta5d6ff'RNodeIPInterface'Tb4b4b4,
Ta5d6ff'SerialInterface'Tb4b4b4,
Ta5d6ff'KISSInterface'Tb4b4b4,
Ta5d6ff'AX25KISSInterface'Tb4b4b4,
Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3newInterfaceTypeTb4b4b4)
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"space-y-4"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'RNodeInterface'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex flex-col gap-3 pb-2 sm:flex-row sm:items-center sm:gap-6"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle
Te6edf3idTff7b72=Ta5d6ff"rnode-use-ip"
Tb4b4b4:Te6edf3model-valueTff7b72=Ta5d6ff"Te6edf3newInterfaceRNodeUseIPTa5d6ff"
Tb4b4b4@Te6edf3updateTb4b4b4:Te6edf3model-valueTff7b72=Ta5d6ff"Te6edf3setRNodeTransportIpTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3forTff7b72=Ta5d6ff"rnode-use-ip" Te6edf3classTff7b72=Ta5d6ff"cursor-pointer mb-0! text-sm"
Tb4b4b4>Connect over network (IP)Tb4b4b4<Tb4b4b4/Tff7b72FormLabel
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle
Te6edf3idTff7b72=Ta5d6ff"rnode-use-ble"
Tb4b4b4:Te6edf3model-valueTff7b72=Ta5d6ff"Te6edf3newInterfaceRNodeUseBleTa5d6ff"
Tb4b4b4@Te6edf3updateTb4b4b4:Te6edf3model-valueTff7b72=Ta5d6ff"Te6edf3setRNodeTransportBleTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel
Te6edf3forTff7b72=Ta5d6ff"rnode-use-ble"
Te6edf3classTff7b72=Ta5d6ff"cursor-pointer mb-0! text-sm"
Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.rnode_ble_toggle"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabel
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceRNodeUseIP Tff7b72|| Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'RNodeIPInterface'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"space-y-2"
Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.rnode_ip_host_label"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceRNodeIPHostTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"10.0.0.1"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-500 leading-relaxed"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.rnode_tcp_port_fixed_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-else-ifTff7b72=Ta5d6ff"
Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'RNodeInterface' Tff7b72&& Te6edf3newInterfaceRNodeUseBle
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"space-y-2"
Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.rnode_ble_peer_label"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceRNodeBlePeerTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'interfaces.rnode_ble_peer_placeholder'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field font-mono text-sm"
Te6edf3autocapitalizeTff7b72=Ta5d6ff"off"
Te6edf3autocompleteTff7b72=Ta5d6ff"off"
Te6edf3spellcheckTff7b72=Ta5d6ff"false"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-[11px] leading-relaxed text-gray-500 dark:text-gray-400"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.rnode_ble_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-elseTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Serial PortTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative"Tb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfacePortTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field appearance-none pr-10"
Tb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Tff7b72nullTa5d6ff" Te6edf3disabledTb4b4b4>Select a port...Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3port Tff7b72in Te6edf3comportsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3portTb4b4b4.Te6edf3deviceTa5d6ff"
Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3portTb4b4b4.Te6edf3deviceTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3portTb4b4b4.Te6edf3device Tff7b72}} (Tff7b72{{ Te6edf3portTb4b4b4.Te6edf3product Tff7b72?? Ta5d6ff"?" Tff7b72}})
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"absolute inset-y-0 right-0 flex items-center px-3 pointer-events-none text-gray-400"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"chevron-down" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mt-2 flex justify-end"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-[10px] uppercase font-bold text-blue-500 hover:text-blue-600 tracking-wider"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3loadComportsTa5d6ff"
Tb4b4b4>
Refresh Ports
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- RNode Radio Parameters -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tb4b4b4[Ta5d6ff'RNodeInterface'Tb4b4b4, Ta5d6ff'RNodeIPInterface'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3newInterfaceTypeTb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"space-y-4 pt-4 border-t border-gray-100 dark:border-zinc-800"
Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Frequency (Hz)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3RNodeGHzValueTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3classTff7b72=Ta5d6ff"input-field text-center"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-center text-gray-400 mt-1"Tb4b4b4>
GHz
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3RNodeMHzValueTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3classTff7b72=Ta5d6ff"input-field text-center"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-center text-gray-400 mt-1"Tb4b4b4>
MHz
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3RNodekHzValueTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3classTff7b72=Ta5d6ff"input-field text-center"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-center text-gray-400 mt-1"Tb4b4b4>
kHz
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3formattedFrequencyTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"mt-2 text-center text-sm font-mono text-blue-500 font-bold"
Tb4b4b4>
Tff7b72{{ Te6edf3formattedFrequency Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>BandwidthTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceBandwidthTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"input-field"Tb4b4b4>
Tb4b4b4<Tff7b72option
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3bw Tff7b72in Te6edf3RNodeInterfaceDefaultsTb4b4b4.Te6edf3bandwidthsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3bwTa5d6ff"
Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3bwTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3bw Tff7b72/ T79c0ff1000 Tff7b72}} kHz
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Power (dBm)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3newInterfaceTxpowerTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Tb4b4b4:Te6edf3minTff7b72=Ta5d6ff"Te6edf3RNodeInterfaceDefaultsTb4b4b4.Te6edf3txpowerMinTa5d6ff"
Tb4b4b4:Te6edf3maxTff7b72=Ta5d6ff"Te6edf3RNodeInterfaceDefaultsTb4b4b4.Te6edf3txpowerMaxTa5d6ff"
Te6edf3stepTff7b72=Ta5d6ff"1"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Spreading FactorTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceSpreadingFactorTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"input-field"Tb4b4b4>
Tb4b4b4<Tff7b72option
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3sf Tff7b72in Te6edf3RNodeInterfaceDefaultsTb4b4b4.Te6edf3spreadingfactorsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3sfTa5d6ff"
Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3sfTa5d6ff"
Tb4b4b4>
SFTff7b72{{ Te6edf3sf Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Coding RateTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceCodingRateTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"input-field"Tb4b4b4>
Tb4b4b4<Tff7b72option
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3cr Tff7b72in Te6edf3RNodeInterfaceDefaultsTb4b4b4.Te6edf3codingratesTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3crTa5d6ff"
Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3crTa5d6ff"
Tb4b4b4>
4:Tff7b72{{ Te6edf3cr Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"rnode-flow-control" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceFlowControlTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3forTff7b72=Ta5d6ff"rnode-flow-control" Te6edf3classTff7b72=Ta5d6ff"cursor-pointer mb-0! text-sm"
Tb4b4b4>Hardware flow controlTb4b4b4<Tb4b4b4/Tff7b72FormLabel
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Station ID CallsignTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceIDCallsignTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g. NOCALL"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>ID Interval (s)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceIDIntervalTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3placeholderTff7b72=Ta5d6ff"600"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Airtime Limit Long (%)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceAirtimeLimitLongTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3maxTff7b72=Ta5d6ff"100"
Te6edf3stepTff7b72=Ta5d6ff"0.1"
Te6edf3placeholderTff7b72=Ta5d6ff"optional"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Airtime Limit Short (%)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceAirtimeLimitShortTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3maxTff7b72=Ta5d6ff"100"
Te6edf3stepTff7b72=Ta5d6ff"0.1"
Te6edf3placeholderTff7b72=Ta5d6ff"optional"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Serial port settings (Serial/KISS/AX25KISS) -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"
Tb4b4b4[Ta5d6ff'SerialInterface'Tb4b4b4, Ta5d6ff'KISSInterface'Tb4b4b4, Ta5d6ff'AX25KISSInterface'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(
Te6edf3newInterfaceType
Tb4b4b4)
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"space-y-4 pt-4 border-t border-gray-100 dark:border-zinc-800"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Baud RateTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceSpeedTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3placeholderTff7b72=Ta5d6ff"9600"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Data BitsTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceDatabitsTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"input-field"Tb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Tff7b72nullTa5d6ff"Tb4b4b4>Default (8)Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"T79c0ff5Ta5d6ff"Tb4b4b4>5Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"T79c0ff6Ta5d6ff"Tb4b4b4>6Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"T79c0ff7Ta5d6ff"Tb4b4b4>7Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"T79c0ff8Ta5d6ff"Tb4b4b4>8Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>ParityTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceParityTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"input-field"Tb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Tff7b72nullTa5d6ff"Tb4b4b4>Default (none)Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"N"Tb4b4b4>NoneTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"E"Tb4b4b4>EvenTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"O"Tb4b4b4>OddTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Stop BitsTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceStopbitsTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"input-field"Tb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Tff7b72nullTa5d6ff"Tb4b4b4>Default (1)Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"T79c0ff1Ta5d6ff"Tb4b4b4>1Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"T79c0ff2Ta5d6ff"Tb4b4b4>2Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- KISS framing parameters (KISS/AX25KISS) -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tb4b4b4[Ta5d6ff'KISSInterface'Tb4b4b4, Ta5d6ff'AX25KISSInterface'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3newInterfaceTypeTb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"space-y-4 pt-4 border-t border-gray-100 dark:border-zinc-800"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Preamble (ms)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfacePreambleTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3placeholderTff7b72=Ta5d6ff"350"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>TX Tail (ms)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceTXTailTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3placeholderTff7b72=Ta5d6ff"20"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Persistence (0-255)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfacePersistenceTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3maxTff7b72=Ta5d6ff"255"
Te6edf3placeholderTff7b72=Ta5d6ff"64"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Slot Time (ms)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceSlotTimeTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3placeholderTff7b72=Ta5d6ff"20"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"kiss-flow-control" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceFlowControlTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3forTff7b72=Ta5d6ff"kiss-flow-control" Te6edf3classTff7b72=Ta5d6ff"cursor-pointer mb-0! text-sm"
Tb4b4b4>Hardware flow controlTb4b4b4<Tb4b4b4/Tff7b72FormLabel
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Beacon CallsignTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceIDCallsignTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"optional"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Beacon Interval (s)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceIDIntervalTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3placeholderTff7b72=Ta5d6ff"optional"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- AX.25 KISS extras -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'AX25KISSInterface'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"space-y-4 pt-4 border-t border-gray-100 dark:border-zinc-800"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>AX.25 CallsignTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceCallsignTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g. NOCALL"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>SSID (0-15)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceSSIDTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3maxTff7b72=Ta5d6ff"15"
Te6edf3placeholderTff7b72=Ta5d6ff"0"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- AutoInterface -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'AutoInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-pink-50/50 dark:bg-pink-900/10 p-3 rounded-2xl border border-pink-100 dark:border-pink-900/20 text-xs text-pink-800 dark:text-pink-300"
Tb4b4b4>
ⓘ Auto Interface auto-discovers peers on connected networks via IPv6
multicast.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Group ID (optional)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceGroupIDTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"reticulum"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-400 mt-1"Tb4b4b4>
Only peers sharing the same group_id will discover each other.
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Discovery ScopeTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceDiscoveryScopeTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"input-field"Tb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Tff7b72nullTa5d6ff"Tb4b4b4>Default (link)Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"link"Tb4b4b4>Link (local segment)Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"admin"Tb4b4b4>AdministrativeTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"site"Tb4b4b4>SiteTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"organisation"Tb4b4b4>OrganisationTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"global"Tb4b4b4>GlobalTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Multicast Address TypeTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceMulticastAddressTypeTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Tff7b72nullTa5d6ff"Tb4b4b4>Default (temporary)Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"temporary"Tb4b4b4>TemporaryTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"permanent"Tb4b4b4>PermanentTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Discovery PortTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceDiscoveryPortTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"1"
Te6edf3maxTff7b72=Ta5d6ff"65535"
Te6edf3placeholderTff7b72=Ta5d6ff"29716"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Data PortTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceDataPortTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"1"
Te6edf3maxTff7b72=Ta5d6ff"65535"
Te6edf3placeholderTff7b72=Ta5d6ff"42671"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"
Tb4b4b4>Allowed Devices (comma separated)Tb4b4b4<Tb4b4b4/Tff7b72FormLabel
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceDevicesTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g. eth0, wlan0"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"
Te6edf3hostKernelInterfacesLoading Tff7b72||
Te6edf3hostKernelInterfacesTb4b4b4.Te6edf3length Tff7b72||
Te6edf3hostKernelInterfacesUnavailable
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"mt-1.5 space-y-1"
Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-500 dark:text-zinc-500"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.auto_iface_ifname_chips_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3hostKernelInterfacesLoadingTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-400"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.kernel_iface_loading"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-1 max-h-20 overflow-y-auto"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3iface Tff7b72in Te6edf3hostKernelInterfacesTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ff'auto-allow-' Tff7b72+ Te6edf3ifaceTb4b4b4.Te6edf3nameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"max-w-full truncate px-1.5 py-0.5 text-[10px] rounded border font-mono transition-colors"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3autoInterfaceChipActiveTb4b4b4(
Ta5d6ff'newInterfaceDevices'Tb4b4b4,
Te6edf3ifaceTb4b4b4.Te6edf3name
Tb4b4b4)
Tff7b72? Ta5d6ff'border-blue-400 bg-blue-50/90 text-blue-900 dark:border-blue-500 dark:bg-blue-950/40 dark:text-blue-200'
Tff7b72: Ta5d6ff'border-gray-200 bg-white/80 text-gray-800 hover:border-blue-300 dark:border-zinc-700 dark:bg-zinc-900/80 dark:text-zinc-200 dark:hover:border-blue-500'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"
Te6edf3toggleAutoInterfaceCommaTokenTb4b4b4(
Ta5d6ff'newInterfaceDevices'Tb4b4b4,
Te6edf3ifaceTb4b4b4.Te6edf3name
Tb4b4b4)
Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"
Tb4b4b4>Ignored Devices (comma separated)Tb4b4b4<Tb4b4b4/Tff7b72FormLabel
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceIgnoredDevicesTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g. tun0, docker0"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"
Te6edf3hostKernelInterfacesLoading Tff7b72||
Te6edf3hostKernelInterfacesTb4b4b4.Te6edf3length Tff7b72||
Te6edf3hostKernelInterfacesUnavailable
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"mt-1.5 space-y-1"
Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-500 dark:text-zinc-500"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.auto_iface_ifname_chips_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3hostKernelInterfacesLoadingTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-400"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.kernel_iface_loading"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-1 max-h-20 overflow-y-auto"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3iface Tff7b72in Te6edf3hostKernelInterfacesTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ff'auto-ignore-' Tff7b72+ Te6edf3ifaceTb4b4b4.Te6edf3nameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"max-w-full truncate px-1.5 py-0.5 text-[10px] rounded border font-mono transition-colors"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3autoInterfaceChipActiveTb4b4b4(
Ta5d6ff'newInterfaceIgnoredDevices'Tb4b4b4,
Te6edf3ifaceTb4b4b4.Te6edf3name
Tb4b4b4)
Tff7b72? Ta5d6ff'border-amber-400 bg-amber-50/90 text-amber-950 dark:border-amber-600 dark:bg-amber-950/40 dark:text-amber-100'
Tff7b72: Ta5d6ff'border-gray-200 bg-white/80 text-gray-800 hover:border-amber-300 dark:border-zinc-700 dark:bg-zinc-900/80 dark:text-zinc-200 dark:hover:border-amber-600'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"
Te6edf3toggleAutoInterfaceCommaTokenTb4b4b4(
Ta5d6ff'newInterfaceIgnoredDevices'Tb4b4b4,
Te6edf3ifaceTb4b4b4.Te6edf3name
Tb4b4b4)
Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Configured Bitrate (bps)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceConfiguredBitrateTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3placeholderTff7b72=Ta5d6ff"optional override"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Pipe Interface -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'PipeInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50/50 dark:bg-zinc-800/30 p-3 rounded-2xl border border-gray-100 dark:border-zinc-800 text-xs text-gray-600 dark:text-zinc-400"
Tb4b4b4>
ⓘ Interface with external programs via stdin/stdout.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>CommandTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceCommandTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"e.g. netcat -l 5757"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Respawn Delay (s)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceRespawnDelayTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"5"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- HTTP tunnel (bundled RNS-over-HTTP) -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'HTTPInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-600 dark:text-zinc-400 leading-relaxed"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_intro"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"flex-1 py-2 rounded-2xl border text-xs font-bold uppercase tracking-tight transition"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3newInterfaceHttpTunnelMode Tff7b72=== Ta5d6ff'client'
Tff7b72? Ta5d6ff'bg-teal-500/10 border-teal-500 text-teal-700 dark:text-teal-300'
Tff7b72: Ta5d6ff'bg-gray-50/50 dark:bg-zinc-800/30 border-gray-100 dark:border-zinc-800 text-gray-600 dark:text-zinc-400'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3newInterfaceHttpTunnelMode Tff7b72= Ta5d6ff'client'Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_mode_client"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"flex-1 py-2 rounded-2xl border text-xs font-bold uppercase tracking-tight transition"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3newInterfaceHttpTunnelMode Tff7b72=== Ta5d6ff'server'
Tff7b72? Ta5d6ff'bg-teal-500/10 border-teal-500 text-teal-700 dark:text-teal-300'
Tff7b72: Ta5d6ff'bg-gray-50/50 dark:bg-zinc-800/30 border-gray-100 dark:border-zinc-800 text-gray-600 dark:text-zinc-400'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3newInterfaceHttpTunnelMode Tff7b72= Ta5d6ff'server'Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_mode_server"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceHttpTunnelMode Tff7b72=== Ta5d6ff'client'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_server_url"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceHttpServerUrlTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"url"
Te6edf3placeholderTff7b72=Ta5d6ff"https://example.com:8080/"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Te6edf3autocompleteTff7b72=Ta5d6ff"off"
Te6edf3spellcheckTff7b72=Ta5d6ff"false"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_poll_interval"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceHttpPollIntervalTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0.01"
Te6edf3stepTff7b72=Ta5d6ff"0.01"
Te6edf3placeholderTff7b72=Ta5d6ff"0.1"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_listen_host"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceHttpListenHostTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"0.0.0.0"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_listen_port"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceHttpListenPortTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"1"
Te6edf3maxTff7b72=Ta5d6ff"65535"
Te6edf3placeholderTff7b72=Ta5d6ff"8080"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label mb-0!"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_check_user_agent"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-400 mt-1"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_check_user_agent_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceHttpCheckUserAgentTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_http_version"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceHttpVersionTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"input-field"Tb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"T79c0ff1Ta5d6ff"Tb4b4b4>HTTP/1.1Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"T79c0ff2Ta5d6ff"Tb4b4b4>HTTP/2Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"T79c0ff3Ta5d6ff"Tb4b4b4>HTTP/3Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"mt-1 text-xs text-gray-500 dark:text-zinc-400"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_http_version_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_mtu"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceHttpMtuTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"128"
Te6edf3placeholderTff7b72=Ta5d6ff"4096"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_user_agent"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceHttpUserAgentTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"RNS-HTTP-Tunnel/1.0"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Te6edf3autocompleteTff7b72=Ta5d6ff"off"
Te6edf3spellcheckTff7b72=Ta5d6ff"false"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceHttpVersion Tff7b72>= T79c0ff2Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"space-y-4 rounded-2xl border border-gray-100 dark:border-zinc-800 p-3"
Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-400"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_tls_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceHttpTunnelMode Tff7b72=== Ta5d6ff'server'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 gap-3"
Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>tls_certfileTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceHttpTlsCertfileTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"input-field font-mono text-xs"
Te6edf3autocompleteTff7b72=Ta5d6ff"off"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>tls_keyfileTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceHttpTlsKeyfileTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"input-field font-mono text-xs"
Te6edf3autocompleteTff7b72=Ta5d6ff"off"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceHttpTunnelMode Tff7b72=== Ta5d6ff'client'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between gap-4"
Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label mb-0!"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_tls_verify"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newInterfaceHttpTlsVerifyTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72BundledDocsHint
Te6edf3hint-i18n-keyTff7b72=Ta5d6ff"interfaces.http_tunnel_docs_hint"
Te6edf3link-i18n-keyTff7b72=Ta5d6ff"interfaces.http_tunnel_docs_link"
Tb4b4b4:Te6edf3docs-rel-pathTff7b72=Ta5d6ff"Te6edf3docsReticulumInterfacesOverviewTa5d6ff"
Te6edf3paragraph-classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-400"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- LocalInterface: IPC path used internally by RNS. Optional external module -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'LocalInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-800 dark:text-zinc-200 leading-snug"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.loopback_local_title"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-600 dark:text-zinc-400 leading-relaxed"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.loopback_local_body"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72BundledDocsHint
Te6edf3hint-i18n-keyTff7b72=Ta5d6ff"interfaces.loopback_local_docs_hint"
Te6edf3link-i18n-keyTff7b72=Ta5d6ff"interfaces.loopback_local_docs_link"
Tb4b4b4:Te6edf3docs-rel-pathTff7b72=Ta5d6ff"Te6edf3docsReticulumInterfacesOverviewTa5d6ff"
Te6edf3paragraph-classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-400"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- External interface module (TypeName.py under Reticulum interfacepath) -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72=== Ta5d6ff'__external__'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-600 dark:text-zinc-400 leading-relaxed"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.custom_external_intro"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"rounded-xl border border-amber-200/80 dark:border-amber-900/40 bg-amber-50/40 dark:bg-amber-950/20 p-3 space-y-2"
Tb4b4b4>
Tb4b4b4<Tff7b72p
Te6edf3classTff7b72=Ta5d6ff"text-xs text-amber-900 dark:text-amber-200/90 leading-relaxed"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.custom_external_install_intro"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72p
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3interfaceModulesPathTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-mono text-amber-800/80 dark:text-amber-200/70 break-all"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.custom_external_interfacepath_label"Tb4b4b4) Tff7b72}}:
Tff7b72{{ Te6edf3interfaceModulesPath Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3refTff7b72=Ta5d6ff"interface-module-file-input"
Te6edf3typeTff7b72=Ta5d6ff"file"
Te6edf3acceptTff7b72=Ta5d6ff".py,text/x-python,text/plain"
Te6edf3classTff7b72=Ta5d6ff"hidden"
Tb4b4b4@Te6edf3changeTff7b72=Ta5d6ff"Te6edf3onInterfaceModuleFileSelectedTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip py-1.5! px-3! text-[10px]!"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3interfaceModuleBusyTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3pickInterfaceModuleFileTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.custom_external_install_button"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-1.5 text-[10px] text-gray-600 dark:text-zinc-400"
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3interfaceModuleOverwriteTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"checkbox"
Te6edf3classTff7b72=Ta5d6ff"rounded-sm"
Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.custom_external_install_overwrite"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72ul
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3installedInterfaceModulesTb4b4b4.Te6edf3lengthTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-mono text-gray-600 dark:text-zinc-400 space-y-1"
Tb4b4b4>
Tb4b4b4<Tff7b72li
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3mod Tff7b72in Te6edf3installedInterfaceModulesTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3modTb4b4b4.Te6edf3filenameTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between gap-2"
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-left hover:underline"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3customExternalTypeName Tff7b72= Te6edf3modTb4b4b4.Te6edf3typeTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3modTb4b4b4.Te6edf3filename Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-red-500 hover:text-red-600 shrink-0"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3interfaceModuleBusyTa5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'interfaces.custom_external_module_delete'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3deleteInstalledInterfaceModuleTb4b4b4(Te6edf3modTb4b4b4.Te6edf3typeTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.custom_external_module_delete"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ulTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-500 dark:text-zinc-500"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.custom_external_modules_empty"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.custom_external_type_label"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3customExternalTypeNameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"input-field font-mono text-xs"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'interfaces.custom_external_type_placeholder'Tb4b4b4)Ta5d6ff"
Te6edf3autocompleteTff7b72=Ta5d6ff"off"
Te6edf3spellcheckTff7b72=Ta5d6ff"false"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.custom_external_json_label"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72textarea
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3customExternalOptionsJsonTa5d6ff"
Te6edf3rowsTff7b72=Ta5d6ff"10"
Te6edf3classTff7b72=Ta5d6ff"input-field font-mono text-xs min-h-[10rem]"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'interfaces.custom_external_json_placeholder'Tb4b4b4)Ta5d6ff"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72textareaTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72BundledDocsHint
Te6edf3hint-i18n-keyTff7b72=Ta5d6ff"interfaces.custom_external_docs_hint"
Te6edf3link-i18n-keyTff7b72=Ta5d6ff"interfaces.custom_external_docs_link"
Tb4b4b4:Te6edf3docs-rel-pathTff7b72=Ta5d6ff"Te6edf3docsReticulumInterfacesOverviewTa5d6ff"
Te6edf3paragraph-classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-400"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Advanced Sections -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-4 pt-4"Tb4b4b4>
T8b949e<!-- RNode Advanced Tools -->
Tb4b4b4<Tff7b72ExpandingSection
Te6edf3v-ifTff7b72=Ta5d6ff"Tb4b4b4[Ta5d6ff'RNodeInterface'Tb4b4b4, Ta5d6ff'RNodeIPInterface'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3newInterfaceTypeTb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"glass-card p-0! overflow-hidden"
Tb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3title
Tb4b4b4>Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-bold"Tb4b4b4>Calculated ParametersTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72template
Tb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3contentTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-6 space-y-6"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Antenna Gain (dBi)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3antennaGainTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-3 gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-blue-500/5 p-3 rounded-2xl border border-blue-500/10 text-center"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] uppercase font-bold text-blue-500 mb-1"Tb4b4b4>
Sensitivity
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-lg font-mono font-bold"Tb4b4b4>
Tff7b72{{ Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3sensitivity Tff7b72?? Ta5d6ff"???" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-blue-500/5 p-3 rounded-2xl border border-blue-500/10 text-center"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] uppercase font-bold text-blue-500 mb-1"Tb4b4b4>
Data Rate
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-lg font-mono font-bold"Tb4b4b4>
Tff7b72{{ Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3dataRate Tff7b72?? Ta5d6ff"???" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-blue-500/5 p-3 rounded-2xl border border-blue-500/10 text-center"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] uppercase font-bold text-blue-500 mb-1"Tb4b4b4>
Link Budget
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-lg font-mono font-bold"Tb4b4b4>
Tff7b72{{ Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3linkBudget Tff7b72?? Ta5d6ff"???" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ExpandingSectionTb4b4b4>

T8b949e<!-- Interface Discovery Settings -->
Tb4b4b4<Tff7b72AddInterfaceDiscoveryPanel Tb4b4b4:Te6edf3discoveryTff7b72=Ta5d6ff"Te6edf3discoveryTa5d6ff" Tb4b4b4@Te6edf3patchTff7b72=Ta5d6ff"Te6edf3applyDiscoveryPatchTa5d6ff" Tb4b4b4/Tb4b4b4>

T8b949e<!-- Global Discovery Settings -->
Tb4b4b4<Tff7b72ExpandingSection Te6edf3classTff7b72=Ta5d6ff"glass-card p-0! overflow-hidden"Tb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3title
Tb4b4b4>Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-bold"Tb4b4b4>Discovery Listener (Peer)Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72template
Tb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3contentTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-6 space-y-6"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"max-w-md"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label mb-0!"
Tb4b4b4>Enable Discovery ListenerTb4b4b4<Tb4b4b4/Tff7b72FormLabel
Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-400"Tb4b4b4>
Listen for announced interfaces and optionally auto-connect.
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3discover_interfacesTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between pt-2"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"max-w-xl min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label mb-0! text-sm"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.discovery_default_bootstrap_only"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72BundledDocsHint Te6edf3paragraph-classTff7b72=Ta5d6ff"text-xs text-gray-400" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3default_bootstrap_onlyTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3discover_interfacesTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"space-y-4 pt-4 border-t border-gray-100 dark:border-zinc-800 animate-in fade-in slide-in-from-top-2"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 md:grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3interface_discovery_whitelistTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Whitelist (names, hosts, IDs)"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3interface_discovery_blacklistTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Blacklist (names, hosts, IDs)"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-end"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"primary-chip text-[10px]!"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3savingDiscoveryTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3saveReticulumDiscoveryConfigTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-save" Te6edf3classTff7b72=Ta5d6ff"size-3" Tb4b4b4/Tb4b4b4>
Save Listener Prefs
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ExpandingSectionTb4b4b4>

T8b949e<!-- Shared Advanced Settings -->
Tb4b4b4<Tff7b72ExpandingSection Te6edf3classTff7b72=Ta5d6ff"glass-card p-0! overflow-hidden"Tb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3title
Tb4b4b4>Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-bold"
Tb4b4b4>Advanced Parameters (IFAC, Mode)Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72template
Tb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3contentTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-6 space-y-6"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newInterfaceType Tff7b72!== Ta5d6ff'HTTPInterface'Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Interface ModeTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72select Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3modeTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"input-field"Tb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Tff7b72undefinedTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.mode_default_full"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"full"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.mode_full"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"gateway"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.mode_gateway"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"access_point"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.mode_access_point"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"roaming"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.mode_roaming"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"boundary"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.mode_boundary"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff"internal"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.mode_internal"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"col-span-2"Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-400"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_mode_note"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Forced BitrateTb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3bitrateTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3placeholderTff7b72=Ta5d6ff"bps"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-4 pt-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-start justify-between gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0 max-w-md"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label mb-0!"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.recursive_prs_label"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-400 mt-1"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.recursive_prs_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3recursive_prsTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-start justify-between gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0 max-w-md"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label mb-0!"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.announces_from_internal_label"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-400 mt-1"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.announces_from_internal_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3announces_from_internalTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-4 pt-4 border-t border-gray-100 dark:border-zinc-800"Tb4b4b4>
Tb4b4b4<Tff7b72FormLabel Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Interface Access Code (IFAC)Tb4b4b4<Tb4b4b4/Tff7b72FormLabelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 md:grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3network_nameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Network Name"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3passphraseTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Passphrase"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ExpandingSectionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Footer Save Action -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"pt-8 flex items-center justify-between gap-4 border-t border-gray-200 dark:border-zinc-800"
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip px-10! py-3! text-sm!"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff'interfaces' Tb4b4b4}Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Cancel
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"primary-chip px-4 py-2 text-sm"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3isSavingTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3saveInterfaceTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3isSaving Tff7b72? Ta5d6ff'loading' Tff7b72: Te6edf3isEditingInterface Tff7b72? Ta5d6ff'content-save' Tff7b72: Ta5d6ff'plus'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-5"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'animate-spin'Tff7b72: Te6edf3isSaving Tb4b4b4}Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3isEditingInterface Tff7b72? Ta5d6ff"Update Connection" Tff7b72: Ta5d6ff"Create Connection" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72aside
Te6edf3classTff7b72=Ta5d6ff"w-full shrink-0 space-y-4 xl:w-96 xl:sticky xl:top-4 xl:self-start xl:max-h-[min(calc(100dvh-6rem),920px)] xl:overflow-y-auto xl:border-l border-gray-200/80 dark:border-zinc-800 xl:pl-8"
Tb4b4b4:Te6edf3aria-labelTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'interfaces.add_interface_sidebar_a11y'Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isEditingInterface Tff7b72&& Te6edf3communityPresetsEnabled Tff7b72&& Te6edf3communityInterfacesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"glass-card p-0! overflow-hidden"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50/50 dark:bg-zinc-800/50 p-4 border-b border-gray-200 dark:border-zinc-800 flex items-center justify-between gap-2"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72h2 Te6edf3classTff7b72=Ta5d6ff"font-bold text-gray-900 dark:text-white flex items-center gap-2 text-sm"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"lightning-bolt" Te6edf3classTff7b72=Ta5d6ff"size-5 text-yellow-500" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.community_quick_start"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-400 mt-0.5"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.community_quick_start_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-0.5 shrink-0"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-gray-400 hover:text-gray-600 dark:hover:text-zinc-200 transition-colors p-1 rounded-full"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3refreshingCommunityPresetsTa5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'interfaces.community_presets_refresh'Tb4b4b4)Ta5d6ff"
Tb4b4b4:Te6edf3aria-labelTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'interfaces.community_presets_refresh'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3refreshCommunityPresetsTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"refresh"
Te6edf3classTff7b72=Ta5d6ff"size-5"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'animate-spin'Tff7b72: Te6edf3refreshingCommunityPresets Tb4b4b4}Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-gray-400 hover:text-gray-600 dark:hover:text-zinc-200 transition-colors p-1 shrink-0"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'interfaces.community_quick_start_hide'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3updateConfigTb4b4b4(Tb4b4b4{ Te6edf3show_suggested_community_interfacesTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"divide-y divide-gray-100 dark:divide-zinc-800 max-h-[min(50vh,28rem)] overflow-y-auto"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3communityIface Tff7b72in Te6edf3communityInterfacesTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"
Te6edf3communityIfaceTb4b4b4.Te6edf3name Tff7b72+
Tb4b4b4(Te6edf3communityIfaceTb4b4b4.Te6edf3target_host Tff7b72|| Ta5d6ff''Tb4b4b4) Tff7b72+
Tb4b4b4(Te6edf3communityIfaceTb4b4b4.Te6edf3target_port Tff7b72|| Ta5d6ff''Tb4b4b4)
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex p-3 sm:p-4 items-center gap-2 hover:bg-gray-50/30 dark:hover:bg-zinc-800/20 transition-colors"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0 flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-bold text-sm text-gray-900 dark:text-zinc-100"Tb4b4b4>
Tff7b72{{ Te6edf3communityIfaceTb4b4b4.Te6edf3name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-mono text-gray-500 dark:text-zinc-400 mt-0.5 flex flex-wrap items-center gap-2"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"server-network" Te6edf3classTff7b72=Ta5d6ff"size-3 shrink-0" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72template Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3communityIfaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff'I2PInterface'Ta5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3communityIfaceTb4b4b4.Te6edf3target_host Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72template Te6edf3v-elseTb4b4b4>
Tff7b72{{ Te6edf3communityIfaceTb4b4b4.Te6edf3target_host Tff7b72}}:Tff7b72{{ Te6edf3communityIfaceTb4b4b4.Te6edf3target_port Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3communityIfaceTb4b4b4.Te6edf3online Tff7b72=== Tff7b72trueTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-green-500 flex items-center gap-1"
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"size-1.5 rounded-full bg-green-500 animate-pulse"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Online
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3communityIfaceTb4b4b4.Te6edf3online Tff7b72=== Tff7b72falseTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-red-500"
Tb4b4b4>OfflineTb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3communityIfaceTb4b4b4.Te6edf3descriptionTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-400 dark:text-zinc-500 mt-1 italic line-clamp-2"
Tb4b4b4>
Tff7b72{{ Te6edf3communityIfaceTb4b4b4.Te6edf3description Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"primary-chip py-1.5! px-2! text-[10px]! shrink-0"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3quickAddInterfaceFromConfigTb4b4b4(Te6edf3communityIfaceTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.community_use_preset"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3v-else-ifTff7b72=Ta5d6ff"
Tff7b72!Te6edf3isEditingInterface Tff7b72&& Te6edf3communityPresetsDismissed Tff7b72&& Te6edf3communityInterfacesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"glass-card p-4 space-y-3"
Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-600 dark:text-zinc-400"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.community_presets_hidden_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"primary-chip py-2! px-4! text-xs! w-full"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3updateConfigTb4b4b4(Tb4b4b4{ Te6edf3show_suggested_community_interfacesTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.community_presets_show_again"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3v-else-ifTff7b72=Ta5d6ff"
Tff7b72!Te6edf3isEditingInterface Tff7b72&&
Te6edf3communityPresetsEnabled Tff7b72&&
Te6edf3communityInterfacesFetchDone Tff7b72&&
Te6edf3communityInterfacesTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"glass-card p-4 text-sm text-gray-500 dark:text-zinc-400"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.community_presets_empty"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"glass-card flex items-center gap-4 bg-blue-50/30 dark:bg-blue-900/10 border-blue-100 dark:border-blue-900/30"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"size-10 rounded-2xl bg-blue-500/10 flex items-center justify-center text-blue-500 shrink-0"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"map-search-outline" Te6edf3classTff7b72=Ta5d6ff"size-6" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"text-sm font-bold text-gray-900 dark:text-white"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.find_more_nodes"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-2 mt-1"Tb4b4b4>
Tb4b4b4<Tff7b72a
Te6edf3hrefTff7b72=Ta5d6ff"https://directory.rns.recipes/"
Te6edf3targetTff7b72=Ta5d6ff"_blank"
Te6edf3relTff7b72=Ta5d6ff"noopener noreferrer"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip py-1! px-2! text-[9px]!"
Tb4b4b4>rns.recipesTb4b4b4<Tb4b4b4/Tff7b72a
Tb4b4b4>
Tb4b4b4<Tff7b72a
Te6edf3hrefTff7b72=Ta5d6ff"https://rmap.world/"
Te6edf3targetTff7b72=Ta5d6ff"_blank"
Te6edf3relTff7b72=Ta5d6ff"noopener noreferrer"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip py-1! px-2! text-[9px]!"
Tb4b4b4>rmap.worldTb4b4b4<Tb4b4b4/Tff7b72a
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"glass-card flex flex-col gap-2 p-4! bg-emerald-50/20 dark:bg-emerald-900/5 border-emerald-100 dark:border-emerald-900/20"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72h3
Te6edf3classTff7b72=Ta5d6ff"text-xs font-bold text-emerald-600 dark:text-emerald-500 uppercase tracking-widest flex items-center gap-2"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"import" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.quick_import"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-400 shrink-0"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.quick_import_paste_hint"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72textarea
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3rawConfigInputTa5d6ff"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'interfaces.quick_import_placeholder'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-full h-20 bg-white/50 dark:bg-zinc-900/50 border border-emerald-100/50 dark:border-emerald-900/30 rounded-xl p-2 text-[10px] font-mono focus:ring-1 focus:ring-emerald-500 outline-hidden transition"
Tb4b4b4@Te6edf3inputTff7b72=Ta5d6ff"Te6edf3handleRawConfigInputTa5d6ff"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72textareaTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3detectedConfigsTb4b4b4.Te6edf3length Tff7b72> T79c0ff1Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-2 mt-1"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3cfg Tff7b72in Te6edf3detectedConfigsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3cfgTb4b4b4.Te6edf3nameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"bg-emerald-500/10 hover:bg-emerald-500/20 border border-emerald-500/20 rounded-lg px-2 py-1 text-[9px] font-bold text-emerald-600 dark:text-emerald-400 transition"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3quickAddInterfaceFromConfigTb4b4b4(Te6edf3cfgTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.quick_import_apply"Tb4b4b4, Tb4b4b4{ Te6edf3nameTff7b72: Te6edf3cfgTb4b4b4.Te6edf3name Tb4b4b4}Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72asideTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>

Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Te6edf3DialogUtils Tff7b72from Ta5d6ff"../../js/DialogUtils"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3numOrNullTb4b4b4, Te6edf3parseRNodeFrequencyHz Tb4b4b4} Tff7b72from Ta5d6ff"../../js/interfaceDiscoveryUtils"Tb4b4b4;
Tff7b72import Te6edf3ExpandingSection Tff7b72from Ta5d6ff"./ExpandingSection.vue"Tb4b4b4;
Tff7b72import Te6edf3AddInterfaceDiscoveryPanel Tff7b72from Ta5d6ff"./internal/AddInterfaceDiscoveryPanel.vue"Tb4b4b4;
Tff7b72import Te6edf3FormLabel Tff7b72from Ta5d6ff"../forms/FormLabel.vue"Tb4b4b4;
Tff7b72import Te6edf3Toggle Tff7b72from Ta5d6ff"../forms/Toggle.vue"Tb4b4b4;
Tff7b72import Te6edf3GlobalState Tff7b72from Ta5d6ff"../../js/GlobalState"Tb4b4b4;
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3BundledDocsHint Tff7b72from Ta5d6ff"./BundledDocsHint.vue"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3RETICULUM_MANUAL_INTERFACES_OVERVIEW_REL Tb4b4b4} Tff7b72from Ta5d6ff"../../js/reticulumDocsEntryUrl.js"Tb4b4b4;

Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"AddInterfacePage"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3MaterialDesignIconTb4b4b4,
Te6edf3FormLabelTb4b4b4,
Te6edf3ExpandingSectionTb4b4b4,
Te6edf3AddInterfaceDiscoveryPanelTb4b4b4,
Te6edf3ToggleTb4b4b4,
Te6edf3BundledDocsHintTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3rawConfigInputTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3detectedConfigsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3isSavingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isEditingInterfaceTff7b72: Tff7b72falseTb4b4b4,

Te6edf3customExternalTypeNameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3customExternalOptionsJsonTff7b72: Ta5d6ff"{}"Tb4b4b4,
Te6edf3docsReticulumInterfacesOverviewTff7b72: Te6edf3RETICULUM_MANUAL_INTERFACES_OVERVIEW_RELTb4b4b4,
Te6edf3interfaceModulesPathTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3installedInterfaceModulesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3interfaceModuleOverwriteTff7b72: Tff7b72falseTb4b4b4,
Te6edf3interfaceModuleBusyTff7b72: Tff7b72falseTb4b4b4,

Te6edf3configTff7b72: Tff7b72nullTb4b4b4,

Te6edf3communityInterfacesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3communityInterfacesFetchDoneTff7b72: Tff7b72falseTb4b4b4,

Te6edf3comportsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,

Te6edf3hostKernelInterfacesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3hostKernelInterfacesLoadingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3hostKernelInterfacesUnavailableTff7b72: Tff7b72nullTb4b4b4,

Te6edf3newInterfaceNameTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceTypeTff7b72: Tff7b72nullTb4b4b4,

Te6edf3newInterfaceGroupIDTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceMulticastAddressTypeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceDevicesTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceIgnoredDevicesTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceDiscoveryScopeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceDiscoveryPortTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceDataPortTff7b72: Tff7b72nullTb4b4b4,

Te6edf3newInterfaceTargetHostTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceTargetPortTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceTransportIdentityTff7b72: Tff7b72nullTb4b4b4,

Te6edf3newInterfaceListenIpTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceListenPortTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceNetworkDeviceTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfacePreferIPV6Tff7b72: Tff7b72falseTb4b4b4,
Te6edf3newInterfaceKISSFramingEnabledTff7b72: Tff7b72falseTb4b4b4,
Te6edf3newInterfaceI2PTunnelingEnabledTff7b72: Tff7b72falseTb4b4b4,
Te6edf3newInterfaceConnectTimeoutTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceMaxReconnectTriesTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceFixedMTUTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceBootstrapOnlyTff7b72: Tff7b72trueTb4b4b4,
Te6edf3newInterfaceConfiguredBitrateTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceConnectableTff7b72: Tff7b72trueTb4b4b4,
Te6edf3newInterfaceBackboneListenModeTff7b72: Tff7b72falseTb4b4b4,
Te6edf3newInterfaceBackboneListenPortTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceBackboneListenIpTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceBackboneListenDeviceTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceBlockFastFlappingTff7b72: Tff7b72trueTb4b4b4,
Te6edf3newInterfaceFastFlappingBlockTimeTff7b72: T79c0ff720Tb4b4b4,
Te6edf3newInterfaceFastFlappingThresholdTff7b72: T79c0ff20Tb4b4b4,
Te6edf3newInterfaceFastFlappingGraceTff7b72: T79c0ff5Tb4b4b4,
Te6edf3newInterfaceHttpTunnelModeTff7b72: Ta5d6ff"client"Tb4b4b4,
Te6edf3newInterfaceHttpServerUrlTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceHttpPollIntervalTff7b72: T79c0ff0.1Tb4b4b4,
Te6edf3newInterfaceHttpListenHostTff7b72: Ta5d6ff"0.0.0.0"Tb4b4b4,
Te6edf3newInterfaceHttpListenPortTff7b72: T79c0ff8080Tb4b4b4,
Te6edf3newInterfaceHttpMtuTff7b72: T79c0ff4096Tb4b4b4,
Te6edf3newInterfaceHttpVersionTff7b72: T79c0ff1Tb4b4b4,
Te6edf3newInterfaceHttpUserAgentTff7b72: Ta5d6ff"RNS-HTTP-Tunnel/1.0"Tb4b4b4,
Te6edf3newInterfaceHttpCheckUserAgentTff7b72: Tff7b72trueTb4b4b4,
Te6edf3newInterfaceHttpTlsVerifyTff7b72: Tff7b72trueTb4b4b4,
Te6edf3newInterfaceHttpTlsCertfileTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceHttpTlsKeyfileTff7b72: Tff7b72nullTb4b4b4,
Te6edf3reticulumInstanceTff7b72: Tb4b4b4{
Te6edf3share_instanceTff7b72: Tff7b72trueTb4b4b4,
Te6edf3local_hops_deltaTff7b72: Tff7b72falseTb4b4b4,
Te6edf3respond_to_probesTff7b72: Tff7b72falseTb4b4b4,
Te6edf3enable_remote_managementTff7b72: Tff7b72falseTb4b4b4,
Te6edf3shared_instance_typeTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3instance_nameTff7b72: Ta5d6ff"default"Tb4b4b4,
Te6edf3rpc_keyTff7b72: Tff7b72nullTb4b4b4,
Te6edf3rpc_config_snippetTff7b72: Tff7b72nullTb4b4b4,
Te6edf3is_connected_to_shared_instanceTff7b72: Tff7b72falseTb4b4b4,
Te6edf3enable_transportTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3existingInterfacesTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,

Te6edf3sharedInterfaceSettingsTff7b72: Tb4b4b4{
Te6edf3modeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3network_nameTff7b72: Tff7b72nullTb4b4b4,
Te6edf3passphraseTff7b72: Tff7b72nullTb4b4b4,
Te6edf3ifac_sizeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3bitrateTff7b72: Tff7b72nullTb4b4b4,
Te6edf3recursive_prsTff7b72: Tff7b72falseTb4b4b4,
Te6edf3announces_from_internalTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,

Te6edf3discoveryTff7b72: Tb4b4b4{
Te6edf3discoverableTff7b72: Tff7b72falseTb4b4b4,
Te6edf3discovery_nameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3announce_intervalTff7b72: T79c0ff360Tb4b4b4,
Te6edf3reachable_onTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3discovery_stamp_valueTff7b72: T79c0ff14Tb4b4b4,
Te6edf3discovery_encryptTff7b72: Tff7b72falseTb4b4b4,
Te6edf3publish_ifacTff7b72: Tff7b72falseTb4b4b4,
Te6edf3latitudeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3longitudeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3heightTff7b72: Tff7b72nullTb4b4b4,
Te6edf3location_cmdTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3discovery_frequencyTff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_bandwidthTff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_modulationTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,

Te6edf3reticulumDiscoveryTff7b72: Tb4b4b4{
Te6edf3discover_interfacesTff7b72: Tff7b72falseTb4b4b4,
Te6edf3interface_discovery_sourcesTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3interface_discovery_whitelistTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3interface_discovery_blacklistTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3required_discovery_valueTff7b72: Tff7b72nullTb4b4b4,
Te6edf3autoconnect_discovered_interfacesTff7b72: Tff7b72nullTb4b4b4,
Te6edf3default_bootstrap_onlyTff7b72: Tff7b72falseTb4b4b4,
Te6edf3network_identityTff7b72: Ta5d6ff""Tb4b4b4,
Tb4b4b4}Tb4b4b4,

Te6edf3savingDiscoveryTff7b72: Tff7b72falseTb4b4b4,
Te6edf3refreshingCommunityPresetsTff7b72: Tff7b72falseTb4b4b4,

Te6edf3newInterfaceForwardIpTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceForwardPortTff7b72: Tff7b72nullTb4b4b4,

Te6edf3I2PSettingsTff7b72: Tb4b4b4{
Te6edf3newInterfacePeersTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,

Te6edf3RNodeMultiInterfaceTff7b72: Tb4b4b4{
Te6edf3portTff7b72: Tff7b72nullTb4b4b4,
Te6edf3subInterfacesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,

Te6edf3newInterfacePortTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceRNodeUseIPTff7b72: Tff7b72falseTb4b4b4,
Te6edf3newInterfaceRNodeUseBleTff7b72: Tff7b72falseTb4b4b4,
Te6edf3newInterfaceRNodeBlePeerTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3newInterfaceRNodeIPHostTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3RNodeGHzValueTff7b72: T79c0ff0Tb4b4b4,
Te6edf3RNodeMHzValueTff7b72: T79c0ff0Tb4b4b4,
Te6edf3RNodekHzValueTff7b72: T79c0ff0Tb4b4b4,
Te6edf3newInterfaceFrequencyTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceBandwidthTff7b72: T79c0ff125000Tb4b4b4,
Te6edf3newInterfaceTxpowerTff7b72: T79c0ff7Tb4b4b4,
Te6edf3newInterfaceSpreadingFactorTff7b72: T79c0ff12Tb4b4b4,
Te6edf3newInterfaceCodingRateTff7b72: T79c0ff5Tb4b4b4,

T8b949e// Serial, KISS, and AX25KISS options
Te6edf3newInterfaceSpeedTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceDatabitsTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceParityTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceStopbitsTff7b72: Tff7b72nullTb4b4b4,

T8b949e// KISS and AX25KISS
Te6edf3newInterfacePreambleTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceTXTailTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfacePersistenceTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceSlotTimeTff7b72: Tff7b72nullTb4b4b4,

T8b949e// AX25 KISS only
Te6edf3newInterfaceSSIDTff7b72: Tff7b72nullTb4b4b4,

T8b949e// RNode and KISS
Te6edf3newInterfaceCallsignTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceIDCallsignTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceIDIntervalTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceFlowControlTff7b72: Tff7b72falseTb4b4b4,
Te6edf3newInterfaceAirtimeLimitLongTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceAirtimeLimitShortTff7b72: Tff7b72nullTb4b4b4,

T8b949e// Pipe interface
Te6edf3newInterfaceCommandTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newInterfaceRespawnDelayTff7b72: Tff7b72nullTb4b4b4,

Te6edf3RNodeInterfaceDefaultsTff7b72: Tb4b4b4{
T8b949e// bandwidth in hz
Te6edf3bandwidthsTff7b72: Tb4b4b4[
T79c0ff7800Tb4b4b4, T8b949e// 7.8 kHz
T79c0ff10400Tb4b4b4, T8b949e// 10.4 kHz
T79c0ff15600Tb4b4b4, T8b949e// 15.6 kHz
T79c0ff20800Tb4b4b4, T8b949e// 20.8 kHz
T79c0ff31250Tb4b4b4, T8b949e// 31.25 kHz
T79c0ff41700Tb4b4b4, T8b949e// 41.7 kHz
T79c0ff62500Tb4b4b4, T8b949e// 62.5 kHz
T79c0ff125000Tb4b4b4, T8b949e// 125 kHz
T79c0ff250000Tb4b4b4, T8b949e// 250 kHz
T79c0ff500000Tb4b4b4, T8b949e// 500 kHz
T79c0ff1625000Tb4b4b4, T8b949e// 1625 kHz (for 2.4 GHz SX1280)
Tb4b4b4]Tb4b4b4,
Te6edf3codingratesTff7b72: Tb4b4b4[
T79c0ff5Tb4b4b4, T8b949e// 4:5
T79c0ff6Tb4b4b4, T8b949e// 4:6
T79c0ff7Tb4b4b4, T8b949e// 4:7
T79c0ff8Tb4b4b4, T8b949e// 4:8
Tb4b4b4]Tb4b4b4,
Te6edf3spreadingfactorsTff7b72: Tb4b4b4[T79c0ff5Tb4b4b4, T79c0ff6Tb4b4b4, T79c0ff7Tb4b4b4, T79c0ff8Tb4b4b4, T79c0ff9Tb4b4b4, T79c0ff10Tb4b4b4, T79c0ff11Tb4b4b4, T79c0ff12Tb4b4b4]Tb4b4b4,
Te6edf3txpowerMinTff7b72: T79c0ff0Tb4b4b4,
Te6edf3txpowerMaxTff7b72: T79c0ff37Tb4b4b4,
Tb4b4b4}Tb4b4b4,

Te6edf3RNodeInterfaceLoRaParametersTff7b72: Tb4b4b4{
Te6edf3antennaGainTff7b72: T79c0ff0Tb4b4b4,
Te6edf3noiseFloorTff7b72: T79c0ff5Tb4b4b4,
Te6edf3sensitivityTff7b72: Tff7b72nullTb4b4b4,
Te6edf3dataRateTff7b72: Tff7b72nullTb4b4b4,
Te6edf3linkBudgetTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3communityPresetsEnabledTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isEditingInterfaceTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3c Tff7b72= Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3cTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3v Tff7b72= Te6edf3cTb4b4b4.Te6edf3show_suggested_community_interfacesTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3v Tff7b72=== Tff7b72undefined Tff7b72|| Te6edf3v Tff7b72=== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3vTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3communityPresetsDismissedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isEditingInterface Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3v Tff7b72= Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3show_suggested_community_interfacesTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3v Tff7b72=== Tff7b72undefined Tff7b72|| Te6edf3v Tff7b72=== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72!Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3vTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3reticulumMinFixedMtuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return T79c0ff500Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formattedFrequencyTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3totalHz Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3calculateFrequencyInHzTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3totalHz Tff7b72>= T79c0ff1e9Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Tb4b4b4(Te6edf3totalHz Tff7b72/ T79c0ff1e9Tb4b4b4)Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff3Tb4b4b4)Tffd700}Ta5d6ff GHzTa5d6ff`Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3totalHz Tff7b72>= T79c0ff1e6Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Tb4b4b4(Te6edf3totalHz Tff7b72/ T79c0ff1e6Tb4b4b4)Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff3Tb4b4b4)Tffd700}Ta5d6ff MHzTa5d6ff`Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3totalHz Tff7b72>= T79c0ff1e3Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Tb4b4b4(Te6edf3totalHz Tff7b72/ T79c0ff1e3Tb4b4b4)Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff3Tb4b4b4)Tffd700}Ta5d6ff kHzTa5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff`Tffd700${Te6edf3totalHzTffd700}Ta5d6ff HzTa5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3transportEnabledTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3config Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3is_transport_enabled Tff7b72=== Tff7b72trueTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3reticulumInstanceTb4b4b4.Te6edf3enable_transport Tff7b72=== Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3hasExistingI2PInterfaceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657ObjectTb4b4b4.Te6edf3valuesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3existingInterfaces Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3ifaceTb4b4b4) Tb4b4b4=> Te6edf3iface Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"I2PInterface"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3canAddI2PInterfaceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isEditingInterface Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"I2PInterface"Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3transportEnabled Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3hasExistingI2PInterfaceTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3watchTff7b72: Tb4b4b4{
Te6edf3newInterfaceBandwidthTff7b72: Ta5d6ff"updateRNodeCalculations"Tb4b4b4,
Te6edf3newInterfaceSpreadingFactorTff7b72: Ta5d6ff"updateRNodeCalculations"Tb4b4b4,
Te6edf3newInterfaceCodingRateTff7b72: Ta5d6ff"updateRNodeCalculations"Tb4b4b4,
Te6edf3newInterfaceTxpowerTff7b72: Ta5d6ff"updateRNodeCalculations"Tb4b4b4,
Ta5d6ff"RNodeInterfaceLoRaParameters.antennaGain"Tff7b72: Ta5d6ff"updateRNodeCalculations"Tb4b4b4,
Te6edf3newInterfaceTypeTb4b4b4(Te6edf3valueTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3value Tff7b72=== Ta5d6ff"__external__"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadInstalledInterfaceModulesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3getConfigTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadReticulumInstanceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadExistingInterfacesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadReticulumDiscoveryConfigTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadComportsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadHostKernelInterfacesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadCommunityInterfacesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"__external__"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadInstalledInterfaceModulesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// check if we are editing an interface
Tff7b72const Te6edf3interfaceName Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$routeTb4b4b4.Te6edf3queryTb4b4b4.Te6edf3interface_nameTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3interfaceName Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isEditingInterface Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadInterfaceToEditTb4b4b4(Te6edf3interfaceNameTb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// check if we have a discovered interface prefill payload
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$routeTb4b4b4.Te6edf3queryTb4b4b4.Te6edf3from_discoveredTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3applyDiscoveredInterfacePrefillTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Te6edf3applyDiscoveryPatchTb4b4b4(Te6edf3patchTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3discovery Tff7b72= Tb4b4b4{
Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4,
Tb4b4b4...Te6edf3patchTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadInstalledInterfaceModulesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/reticulum/interface-modules"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3interfaceModulesPath Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3interfacepath Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3installedInterfaceModules Tff7b72= Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3modulesTb4b4b4) Tff7b72? Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3modules Tff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3interfaceModulesPath Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3installedInterfaceModules Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3pickInterfaceModuleFileTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3input Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"interface-module-file-input"Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3inputTb4b4b4) Tb4b4b4{
Te6edf3inputTb4b4b4.Te6edf3value Tff7b72= Ta5d6ff""Tb4b4b4;
Te6edf3inputTb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onInterfaceModuleFileSelectedTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3file Tff7b72= Te6edf3eventTff7b72?Tb4b4b4.Te6edf3targetTff7b72?Tb4b4b4.Te6edf3filesTff7b72?Tb4b4b4.Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fileTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3interfaceModuleBusy Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3formData Tff7b72= Tff7b72new Te6edf3FormDataTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3formDataTb4b4b4.Te6edf3appendTb4b4b4(Ta5d6ff"file"Tb4b4b4, Te6edf3fileTb4b4b4, Te6edf3fileTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3interfaceModuleOverwriteTb4b4b4) Tb4b4b4{
Te6edf3formDataTb4b4b4.Te6edf3appendTb4b4b4(Ta5d6ff"overwrite"Tb4b4b4, Ta5d6ff"1"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/reticulum/interface-modules"Tb4b4b4, Te6edf3formDataTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3typeName Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3typeTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3typeNameTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3customExternalTypeName Tff7b72= Te6edf3typeNameTb4b4b4;
Tb4b4b4}
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.custom_external_install_success"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadInstalledInterfaceModulesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3message Tff7b72= Te6edf3eTff7b72?Tb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.custom_external_install_failed"Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3interfaceModuleBusy Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3eventTff7b72?Tb4b4b4.Te6edf3targetTb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3value Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3deleteInstalledInterfaceModuleTb4b4b4(Te6edf3typeNameTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3typeName Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3interfaceModuleBusyTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3interfaceModuleBusy Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Tff7b72deleteTb4b4b4(
Ta5d6ff`Ta5d6ff/api/v1/reticulum/interface-modules/Tffd700${Tffa657encodeURIComponentTb4b4b4(Te6edf3typeNameTb4b4b4)Tffd700}Ta5d6ff`
Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.custom_external_module_deleted"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3customExternalTypeName Tff7b72=== Te6edf3typeNameTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3customExternalTypeName Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadInstalledInterfaceModulesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3message Tff7b72=
Te6edf3eTff7b72?Tb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.custom_external_module_delete_failed"Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3interfaceModuleBusy Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getConfigTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/configTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3config Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3configTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadReticulumInstanceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/reticulum/instanceTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3instanceTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3reticulumInstance Tff7b72= Tb4b4b4{
Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3reticulumInstanceTb4b4b4,
Tb4b4b4...Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3instanceTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadExistingInterfacesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/reticulum/interfacesTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3existingInterfaces Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3interfaces Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3existingInterfaces Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3updateConfigTb4b4b4(Te6edf3configTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4, Te6edf3configTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3config Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3configTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"common.save_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3parseBoolTb4b4b4(Te6edf3valueTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3value Tff7b72=== Ta5d6ff"string"Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4[Ta5d6ff"true"Tb4b4b4, Ta5d6ff"yes"Tb4b4b4, Ta5d6ff"1"Tb4b4b4, Ta5d6ff"y"Tb4b4b4, Ta5d6ff"on"Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3valueTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657BooleanTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3numOrNullTb4b4b4,
Te6edf3parseRNodeFrequencyHzTb4b4b4,
Tff7b72async Te6edf3loadReticulumDiscoveryConfigTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/reticulum/discoveryTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3discovery Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3discovery Tff7b72?? Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3discover_interfaces Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3discoveryTb4b4b4.Te6edf3discover_interfacesTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3interface_discovery_whitelist Tff7b72= Te6edf3discoveryTb4b4b4.Te6edf3interface_discovery_whitelist Tff7b72?? Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3interface_discovery_blacklist Tff7b72= Te6edf3discoveryTb4b4b4.Te6edf3interface_discovery_blacklist Tff7b72?? Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3default_bootstrap_only Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(
Te6edf3discoveryTb4b4b4.Te6edf3default_bootstrap_only Tff7b72?? Tff7b72false
Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isEditingInterfaceTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceBootstrapOnly Tff7b72= Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3default_bootstrap_onlyTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3saveReticulumDiscoveryConfigTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3savingDiscoveryTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3savingDiscovery Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3payload Tff7b72= Tb4b4b4{
Te6edf3discover_interfacesTff7b72: Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3discover_interfacesTb4b4b4,
Te6edf3interface_discovery_whitelistTff7b72: Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3interface_discovery_whitelist Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3interface_discovery_blacklistTff7b72: Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3interface_discovery_blacklist Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3default_bootstrap_onlyTff7b72: Tff7b72thisTb4b4b4.Te6edf3reticulumDiscoveryTb4b4b4.Te6edf3default_bootstrap_onlyTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/reticulum/discoveryTa5d6ff`Tb4b4b4, Te6edf3payloadTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff"Discovery listener preferences saved."Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save discovery preferences."Tb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3savingDiscovery Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadComportsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/comportsTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3comports Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3comportsTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3buildRNodeTcpPortTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72let Te6edf3h Tff7b72= Tffa657StringTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeIPHost Tff7b72?? Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72while Tb4b4b4(Te6edf3hTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff":"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3h Tff7b72= Te6edf3hTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Tff7b72-T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff`Ta5d6fftcp://Tffd700${Te6edf3hTffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3parseRnodeTcpHostFromPortTb4b4b4(Te6edf3portStrTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3s Tff7b72= Tffa657StringTb4b4b4(Te6edf3portStr Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3sTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"tcp://"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"localhost"Tb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3rest Tff7b72= Te6edf3sTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff6Tb4b4b4)Tb4b4b4;
Tff7b72while Tb4b4b4(Te6edf3restTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff":"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3rest Tff7b72= Te6edf3restTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Tff7b72-T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3restTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3restTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"["Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3close Tff7b72= Te6edf3restTb4b4b4.Te6edf3indexOfTb4b4b4(Ta5d6ff"]"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3close Tff7b72!== Tff7b72-T79c0ff1 Tff7b72&& Te6edf3restTb4b4b4[Te6edf3close Tff7b72+ T79c0ff1Tb4b4b4] Tff7b72=== Ta5d6ff":"Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3restTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3close Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3restTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3restTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff":"Tb4b4b4) Tff7b72&& Te6edf3restTb4b4b4.Te6edf3indexOfTb4b4b4(Ta5d6ff":"Tb4b4b4) Tff7b72=== Te6edf3restTb4b4b4.Te6edf3lastIndexOfTb4b4b4(Ta5d6ff":"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3idx Tff7b72= Te6edf3restTb4b4b4.Te6edf3indexOfTb4b4b4(Ta5d6ff":"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3tail Tff7b72= Te6edf3restTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3idx Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Ta5d6ff/^\d{1,5}$/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3tailTb4b4b4) Tff7b72&& Tffa657NumberTb4b4b4(Te6edf3tailTb4b4b4) Tff7b72<= T79c0ff65535Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3restTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3idxTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3restTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3autoInterfaceChipActiveTb4b4b4(Te6edf3fieldKeyTb4b4b4, Te6edf3tokenTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3raw Tff7b72= Tff7b72thisTb4b4b4[Te6edf3fieldKeyTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3raw Tff7b72== Tff7b72null Tff7b72|| Te6edf3raw Tff7b72=== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657StringTb4b4b4(Te6edf3rawTb4b4b4)
Tb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff","Tb4b4b4)
Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3sTb4b4b4) Tb4b4b4=> Te6edf3sTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3tokenTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3toggleAutoInterfaceCommaTokenTb4b4b4(Te6edf3fieldKeyTb4b4b4, Te6edf3tokenTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3raw Tff7b72= Tff7b72thisTb4b4b4[Te6edf3fieldKeyTb4b4b4]Tb4b4b4;
Tff7b72let Te6edf3str Tff7b72= Te6edf3raw Tff7b72== Tff7b72null Tff7b72|| Te6edf3raw Tff7b72=== Ta5d6ff"" Tff7b72? Ta5d6ff"" Tff7b72: Tffa657StringTb4b4b4(Te6edf3rawTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3tokens Tff7b72= Te6edf3str
Tb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff","Tb4b4b4)
Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3sTb4b4b4) Tb4b4b4=> Te6edf3sTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3filterTb4b4b4(Tffa657BooleanTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3i Tff7b72= Te6edf3tokensTb4b4b4.Te6edf3indexOfTb4b4b4(Te6edf3tokenTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3i Tff7b72=== Tff7b72-T79c0ff1Tb4b4b4) Tb4b4b4{
Te6edf3tokensTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3tokenTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3tokensTb4b4b4.Te6edf3spliceTb4b4b4(Te6edf3iTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3next Tff7b72= Te6edf3tokensTb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff", "Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4[Te6edf3fieldKeyTb4b4b4] Tff7b72= Te6edf3next Tff7b72=== Ta5d6ff"" Tff7b72? Tff7b72null Tff7b72: Te6edf3nextTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadHostKernelInterfacesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hostKernelInterfacesLoading Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hostKernelInterfacesUnavailable Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/system/network-interfacesTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hostKernelInterfaces Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3interfaces Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hostKernelInterfacesUnavailable Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3unavailable_reason Tff7b72|| Tff7b72nullTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hostKernelInterfaces Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hostKernelInterfacesUnavailable Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72?? Te6edf3eTb4b4b4.Te6edf3message Tff7b72?? Ta5d6ff"unavailable"Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hostKernelInterfacesLoading Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3effectiveRNodeBlePortTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72let Te6edf3p Tff7b72= Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeBlePeer Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3pTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"ble://"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3pTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"ble://"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3pTb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff`Ta5d6ffble://Tffd700${Te6edf3pTffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3setRNodeTransportIpTb4b4b4(Te6edf3vTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseIP Tff7b72= Tffa657BooleanTb4b4b4(Te6edf3vTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseIPTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseBle Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3setRNodeTransportBleTb4b4b4(Te6edf3vTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseBle Tff7b72= Tffa657BooleanTb4b4b4(Te6edf3vTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseBleTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseIP Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadCommunityInterfacesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/community-interfacesTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3communityInterfaces Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3interfaces Tff7b72?? Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3communityInterfaces Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3communityInterfacesFetchDone Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3refreshCommunityPresetsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3refreshingCommunityPresetsTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3refreshingCommunityPresets Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3r Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/community-interfaces/refresh"Tb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3n Tff7b72= Te6edf3rTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3count Tff7b72?? T79c0ff0Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.community_presets_refreshed"Tb4b4b4, Tb4b4b4{ Te6edf3countTff7b72: Te6edf3n Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadCommunityInterfacesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3msg Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.community_presets_refresh_failed"Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3msgTb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3refreshingCommunityPresets Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadInterfaceToEditTb4b4b4(Te6edf3interfaceNameTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/reticulum/interfacesTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3interfaces Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3interfacesTb4b4b4;
Tff7b72const Te6edf3iface Tff7b72= Te6edf3interfacesTb4b4b4[Te6edf3interfaceNameTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3ifaceTb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.interface_not_found"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff"interfaces" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72thisTb4b4b4.Te6edf3newInterfaceName Tff7b72= Te6edf3interfaceNameTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3typeTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3customExternalTypeName Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3customExternalOptionsJson Tff7b72= Ta5d6ff"{}"Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isDedicatedFormInterfaceTypeTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3typeTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72= Ta5d6ff"__external__"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3customExternalTypeName Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3typeTb4b4b4;
Tff7b72const Te6edf3skip Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4[Ta5d6ff"type"Tb4b4b4, Ta5d6ff"name"Tb4b4b4, Ta5d6ff"interface_enabled"Tb4b4b4, Ta5d6ff"enabled"Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3flat Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4[Te6edf3kTb4b4b4, Te6edf3vTb4b4b4] Tff7b72of Tffa657ObjectTb4b4b4.Te6edf3entriesTb4b4b4(Te6edf3ifaceTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3skipTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3kTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3v Tff7b72!== Tff7b72null Tff7b72&& Tff7b72typeof Te6edf3v Tff7b72=== Ta5d6ff"object" Tff7b72&& Tff7b72!Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3vTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
Te6edf3flatTb4b4b4[Te6edf3kTb4b4b4] Tff7b72= Te6edf3vTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3customExternalOptionsJson Tff7b72= Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Te6edf3flatTb4b4b4, Tff7b72nullTb4b4b4, T79c0ff2Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72thisTb4b4b4.Te6edf3newInterfaceTargetHost Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3target_host Tff7b72?? Te6edf3ifaceTb4b4b4.Te6edf3remote Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceTargetPort Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3target_port Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceTransportIdentity Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3transport_identity Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"I2PInterface" Tff7b72&& Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3peersTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3I2PSettingsTb4b4b4.Te6edf3newInterfacePeers Tff7b72= Tb4b4b4[Tb4b4b4...Te6edf3ifaceTb4b4b4.Te6edf3peersTb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3newInterfaceListenIp Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3listen_ipTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceListenPort Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3listen_portTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceForwardIp Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3forward_ipTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceForwardPort Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3forward_portTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceNetworkDevice Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3deviceTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfacePreferIPV6 Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3prefer_ipv6Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceKISSFramingEnabled Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3kiss_framingTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceI2PTunnelingEnabled Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3i2p_tunneledTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceConnectTimeout Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3connect_timeout Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceMaxReconnectTries Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3max_reconnect_tries Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceFixedMTU Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3fixed_mtu Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceConnectable Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3connectable Tff7b72=== Tff7b72undefined Tff7b72? Tff7b72true Tff7b72: Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3connectableTb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"BackboneInterface"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceBackboneListenMode Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3listen_port Tff7b72!= Tff7b72null Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3listen_port Tff7b72!== Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceBackboneListenIp Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3listen_ip Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceBackboneListenPort Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3listen_port Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceBackboneListenDevice Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3device Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceBlockFastFlapping Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3block_fast_flapping Tff7b72=== Tff7b72undefined Tff7b72|| Te6edf3ifaceTb4b4b4.Te6edf3block_fast_flapping Tff7b72=== Tff7b72null
Tff7b72? Tff7b72true
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3block_fast_flappingTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceFastFlappingBlockTime Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3fast_flapping_block_time Tff7b72!= Tff7b72null Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3fast_flapping_block_time Tff7b72!== Ta5d6ff""
Tff7b72? Tffa657NumberTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3fast_flapping_block_timeTb4b4b4)
Tff7b72: T79c0ff720Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceFastFlappingThreshold Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3fast_flapping_threshold Tff7b72!= Tff7b72null Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3fast_flapping_threshold Tff7b72!== Ta5d6ff""
Tff7b72? Tffa657NumberTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3fast_flapping_thresholdTb4b4b4)
Tff7b72: T79c0ff20Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceFastFlappingGrace Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3fast_flapping_grace Tff7b72!= Tff7b72null Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3fast_flapping_grace Tff7b72!== Ta5d6ff""
Tff7b72? Tffa657NumberTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3fast_flapping_graceTb4b4b4)
Tff7b72: T79c0ff5Tb4b4b4;
Tb4b4b4}

Tff7b72if Tb4b4b4(
Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"TCPClientInterface" Tff7b72||
Tb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"BackboneInterface" Tff7b72&& Tff7b72!Tb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3listen_port Tff7b72!= Tff7b72null Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3listen_port Tff7b72!== Ta5d6ff""Tb4b4b4)Tb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceBootstrapOnly Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3bootstrap_only Tff7b72!== Tff7b72undefined Tff7b72&&
Te6edf3ifaceTb4b4b4.Te6edf3bootstrap_only Tff7b72!== Tff7b72null Tff7b72&&
Te6edf3ifaceTb4b4b4.Te6edf3bootstrap_only Tff7b72!== Ta5d6ff""
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3bootstrap_onlyTb4b4b4)
Tff7b72: Tff7b72falseTb4b4b4;
Tb4b4b4}

Tff7b72thisTb4b4b4.Te6edf3newInterfaceGroupID Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3group_id Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceMulticastAddressType Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3multicast_address_type Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceDevices Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3devices Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceIgnoredDevices Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3ignored_devices Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceDiscoveryScope Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3discovery_scope Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceDiscoveryPort Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3discovery_port Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceDataPort Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3data_port Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceConfiguredBitrate Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3configured_bitrate Tff7b72?? Tff7b72nullTb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"HTTPInterface"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3tunnelMode Tff7b72= Tffa657StringTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3mode Tff7b72|| Ta5d6ff"client"Tb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpTunnelMode Tff7b72= Te6edf3tunnelMode Tff7b72=== Ta5d6ff"server" Tff7b72? Ta5d6ff"server" Tff7b72: Ta5d6ff"client"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpServerUrl Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3server_url Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpPollInterval Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3poll_interval Tff7b72!= Tff7b72null Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3poll_interval Tff7b72!== Ta5d6ff"" Tff7b72? Tffa657NumberTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3poll_intervalTb4b4b4) Tff7b72: T79c0ff0.1Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpListenHost Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3listen_host Tff7b72?? Ta5d6ff"0.0.0.0"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpListenPort Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3listen_port Tff7b72?? T79c0ff8080Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpMtu Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3mtu Tff7b72!= Tff7b72null Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3mtu Tff7b72!== Ta5d6ff"" Tff7b72? Tffa657NumberTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3mtuTb4b4b4) Tff7b72: T79c0ff4096Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpVersion Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3http_version Tff7b72!= Tff7b72null Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3http_version Tff7b72!== Ta5d6ff"" Tff7b72? Tffa657NumberTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3http_versionTb4b4b4) Tff7b72: T79c0ff1Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpUserAgent Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3user_agent Tff7b72?? Ta5d6ff"RNS-HTTP-Tunnel/1.0"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpCheckUserAgent Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3check_user_agent Tff7b72=== Tff7b72undefined Tff7b72|| Te6edf3ifaceTb4b4b4.Te6edf3check_user_agent Tff7b72=== Tff7b72null
Tff7b72? Tff7b72true
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3check_user_agentTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpTlsVerify Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3tls_verify Tff7b72=== Tff7b72undefined Tff7b72|| Te6edf3ifaceTb4b4b4.Te6edf3tls_verify Tff7b72=== Tff7b72null
Tff7b72? Tff7b72true
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3tls_verifyTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpTlsCertfile Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3tls_certfile Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpTlsKeyfile Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3tls_keyfile Tff7b72?? Tff7b72nullTb4b4b4;
Tb4b4b4}

Tff7b72thisTb4b4b4.Te6edf3newInterfaceFlowControl Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3flow_controlTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceCallsign Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3callsign Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceIDCallsign Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3id_callsign Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceIDInterval Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3id_interval Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceAirtimeLimitLong Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3airtime_limit_long Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceAirtimeLimitShort Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3airtime_limit_short Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceSSID Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3ssid Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceSpeed Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3speed Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceDatabits Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3databits Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceParity Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3parity Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceStopbits Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3stopbits Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfacePreamble Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3preamble Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceTXTail Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3txtail Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfacePersistence Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3persistence Tff7b72?? Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceSlotTime Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3slottime Tff7b72?? Tff7b72nullTb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3newInterfacePort Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3portTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseIP Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseBle Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeBlePeer Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3port Tff7b72&& Tffa657StringTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3portTb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"ble://"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseBle Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeBlePeer Tff7b72= Tffa657StringTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3portTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3port Tff7b72&& Tffa657StringTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3portTb4b4b4)Tb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"tcp://"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeIPHost Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseRnodeTcpHostFromPortTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3portTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseIP Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3newInterfaceFrequency Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3frequencyTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceBandwidth Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3bandwidthTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceTxpower Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3txpowerTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceSpreadingFactor Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3spreadingfactorTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceCodingRate Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3codingrateTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceCommand Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3commandTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRespawnDelay Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3respawn_delayTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3mode Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"HTTPInterface" Tff7b72? Tff7b72null Tff7b72: Te6edf3ifaceTb4b4b4.Te6edf3modeTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3bitrate Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3bitrateTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3network_name Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3network_nameTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3passphrase Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3passphraseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3recursive_prs Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3recursive_prsTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3announces_from_internal Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3announces_from_internal Tff7b72=== Tff7b72undefined Tff7b72|| Te6edf3ifaceTb4b4b4.Te6edf3announces_from_internal Tff7b72=== Tff7b72null
Tff7b72? Tff7b72true
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3announces_from_internalTb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3frequencyTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3RNodeGHzValue Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3frequency Tff7b72/ T79c0ff1e9Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3RNodeMHzValue Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3frequency Tff7b72% T79c0ff1e9Tb4b4b4) Tff7b72/ T79c0ff1e6Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3RNodekHzValue Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3frequency Tff7b72% T79c0ff1e6Tb4b4b4) Tff7b72/ T79c0ff1e3Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discoverable Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3discoverableTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_name Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3discovery_name Tff7b72?? Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3announce_interval Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3announce_interval Tff7b72!= Tff7b72null Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3announce_interval Tff7b72!== Ta5d6ff""
Tff7b72? Tffa657NumberTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3announce_intervalTb4b4b4)
Tff7b72: T79c0ff360Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3reachable_on Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3reachable_on Tff7b72?? Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_stamp_value Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3discovery_stamp_value Tff7b72!= Tff7b72null Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3discovery_stamp_value Tff7b72!== Ta5d6ff""
Tff7b72? Tffa657NumberTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3discovery_stamp_valueTb4b4b4)
Tff7b72: T79c0ff14Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_encrypt Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3discovery_encryptTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3publish_ifac Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3publish_ifacTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3latitude Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3latitude Tff7b72!= Tff7b72null Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3latitude Tff7b72!== Ta5d6ff"" Tff7b72? Tffa657NumberTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3latitudeTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3longitude Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3longitude Tff7b72!= Tff7b72null Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3longitude Tff7b72!== Ta5d6ff"" Tff7b72? Tffa657NumberTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3longitudeTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3height Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3height Tff7b72!= Tff7b72null Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3height Tff7b72!== Ta5d6ff"" Tff7b72? Tffa657NumberTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3heightTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3location_cmd Tff7b72= Te6edf3ifaceTb4b4b4.Te6edf3location_cmd Tff7b72?? Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_frequency Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3discovery_frequency Tff7b72!= Tff7b72null Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3discovery_frequency Tff7b72!== Ta5d6ff""
Tff7b72? Tffa657NumberTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3discovery_frequencyTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_bandwidth Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3discovery_bandwidth Tff7b72!= Tff7b72null Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3discovery_bandwidth Tff7b72!== Ta5d6ff""
Tff7b72? Tffa657NumberTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3discovery_bandwidthTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_modulation Tff7b72=
Te6edf3ifaceTb4b4b4.Te6edf3discovery_modulation Tff7b72!= Tff7b72null Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3discovery_modulation Tff7b72!== Ta5d6ff""
Tff7b72? Tffa657NumberTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3discovery_modulationTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3handleRawConfigInputTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3rawConfigInputTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3detectedConfigs Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3configs Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3sections Tff7b72= Tff7b72thisTb4b4b4.Te6edf3rawConfigInputTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff/\[\[(.*?)\]\]/Tb4b4b4)Tb4b4b4;

T8b949e// sections[0] is everything before the first [[...]]
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff1Tb4b4b4; Te6edf3i Tff7b72< Te6edf3sectionsTb4b4b4.Te6edf3lengthTb4b4b4; Te6edf3i Tff7b72+= T79c0ff2Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3name Tff7b72= Te6edf3sectionsTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3content Tff7b72= Te6edf3sectionsTb4b4b4[Te6edf3i Tff7b72+ T79c0ff1Tb4b4b4] Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72const Te6edf3config Tff7b72= Tb4b4b4{ Te6edf3name Tb4b4b4}Tb4b4b4;

T8b949e// simple key-value extraction
Tff7b72const Te6edf3lines Tff7b72= Te6edf3contentTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"\n"Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3line Tff7b72of Te6edf3linesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3match Tff7b72= Te6edf3lineTb4b4b4.Te6edf3matchTb4b4b4(Ta5d6ff/^\s*(\w+)\s*=\s*(.*?)\s*$/Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3matchTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3key Tff7b72= Te6edf3matchTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3value Tff7b72= Te6edf3matchTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// clean up quotes if present
Tff7b72if Tb4b4b4(
Tb4b4b4(Te6edf3valueTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff'"'Tb4b4b4) Tff7b72&& Te6edf3valueTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff'"'Tb4b4b4)Tb4b4b4) Tff7b72||
Tb4b4b4(Te6edf3valueTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"'"Tb4b4b4) Tff7b72&& Te6edf3valueTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff"'"Tb4b4b4)Tb4b4b4)
Tb4b4b4) Tb4b4b4{
Te6edf3value Tff7b72= Te6edf3valueTb4b4b4.Te6edf3substringTb4b4b4(T79c0ff1Tb4b4b4, Te6edf3valueTb4b4b4.Te6edf3length Tff7b72- T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Te6edf3configTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72= Te6edf3valueTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3typeTb4b4b4) Tb4b4b4{
Te6edf3configsTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3configTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72thisTb4b4b4.Te6edf3detectedConfigs Tff7b72= Te6edf3configsTb4b4b4;

T8b949e// if only one config, auto-import it directly
Tff7b72if Tb4b4b4(Te6edf3configsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff1Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3quickAddInterfaceFromConfigTb4b4b4(Te6edf3configsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3applyConfigTb4b4b4(Te6edf3configTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3configTb4b4b4) Tff7b72returnTb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3newInterfaceName Tff7b72= Te6edf3configTb4b4b4.Te6edf3name Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3newInterfaceNameTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72= Te6edf3configTb4b4b4.Te6edf3typeTb4b4b4;

T8b949e// Map raw config keys to component data
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3target_hostTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceTargetHost Tff7b72= Te6edf3configTb4b4b4.Te6edf3target_hostTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3target_portTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceTargetPort Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3target_portTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3listen_ipTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceListenIp Tff7b72= Te6edf3configTb4b4b4.Te6edf3listen_ipTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3listen_portTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceListenPort Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3listen_portTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3forward_ipTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceForwardIp Tff7b72= Te6edf3configTb4b4b4.Te6edf3forward_ipTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3forward_portTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceForwardPort Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3forward_portTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3portTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfacePort Tff7b72= Te6edf3configTb4b4b4.Te6edf3portTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseBle Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseIP Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Tffa657StringTb4b4b4(Te6edf3configTb4b4b4.Te6edf3portTb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"ble://"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseBle Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeBlePeer Tff7b72= Te6edf3configTb4b4b4.Te6edf3portTb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3portTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"tcp://"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeIPHost Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseRnodeTcpHostFromPortTb4b4b4(Te6edf3configTb4b4b4.Te6edf3portTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseIP Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tb4b4b4}

T8b949e// Radio params
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3frequencyTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hz Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseRNodeFrequencyHzTb4b4b4(Te6edf3configTb4b4b4.Te6edf3frequencyTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3hz Tff7b72!= Tff7b72null Tff7b72&& Te6edf3hz Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3RNodeGHzValue Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3hz Tff7b72/ T79c0ff1e9Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3RNodeMHzValue Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tb4b4b4(Te6edf3hz Tff7b72% T79c0ff1e9Tb4b4b4) Tff7b72/ T79c0ff1e6Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3RNodekHzValue Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tb4b4b4(Te6edf3hz Tff7b72% T79c0ff1e6Tb4b4b4) Tff7b72/ T79c0ff1e3Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3bandwidthTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceBandwidth Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3bandwidthTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3txpowerTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceTxpower Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3txpowerTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3spreadingfactorTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceSpreadingFactor Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3spreadingfactorTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3codingrateTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceCodingRate Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3codingrateTb4b4b4)Tb4b4b4;

T8b949e// KISS/AX.25
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3callsignTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceCallsign Tff7b72= Te6edf3configTb4b4b4.Te6edf3callsignTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3ssidTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceSSID Tff7b72= Te6edf3configTb4b4b4.Te6edf3ssidTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3id_callsignTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceIDCallsign Tff7b72= Te6edf3configTb4b4b4.Te6edf3id_callsignTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3id_intervalTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceIDInterval Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3id_intervalTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3flow_control Tff7b72!== Tff7b72undefinedTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceFlowControl Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3flow_controlTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3preambleTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfacePreamble Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3preambleTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3txtailTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceTXTail Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3txtailTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3persistenceTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfacePersistence Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3persistenceTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3slottimeTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceSlotTime Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3slottimeTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3speedTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceSpeed Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3speedTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3databitsTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceDatabits Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3databitsTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3parityTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceParity Tff7b72= Te6edf3configTb4b4b4.Te6edf3parityTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3stopbitsTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceStopbits Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3stopbitsTb4b4b4)Tb4b4b4;

T8b949e// AutoInterface
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3group_idTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceGroupID Tff7b72= Te6edf3configTb4b4b4.Te6edf3group_idTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3discovery_scopeTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceDiscoveryScope Tff7b72= Te6edf3configTb4b4b4.Te6edf3discovery_scopeTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3discovery_portTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceDiscoveryPort Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3discovery_portTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3data_portTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceDataPort Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3data_portTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3multicast_address_typeTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceMulticastAddressType Tff7b72= Te6edf3configTb4b4b4.Te6edf3multicast_address_typeTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3devicesTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceDevices Tff7b72= Te6edf3configTb4b4b4.Te6edf3devicesTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3ignored_devicesTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceIgnoredDevices Tff7b72= Te6edf3configTb4b4b4.Te6edf3ignored_devicesTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3configured_bitrateTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceConfiguredBitrate Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3configured_bitrateTb4b4b4)Tb4b4b4;

T8b949e// TCP / Network extras
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3kiss_framing Tff7b72!== Tff7b72undefinedTb4b4b4)
Tff7b72thisTb4b4b4.Te6edf3newInterfaceKISSFramingEnabled Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3kiss_framingTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3i2p_tunneled Tff7b72!== Tff7b72undefinedTb4b4b4)
Tff7b72thisTb4b4b4.Te6edf3newInterfaceI2PTunnelingEnabled Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3i2p_tunneledTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3connect_timeoutTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceConnectTimeout Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3connect_timeoutTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3max_reconnect_triesTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceMaxReconnectTries Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3max_reconnect_triesTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3fixed_mtuTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceFixedMTU Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3fixed_mtuTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3bootstrap_only Tff7b72!== Tff7b72undefined Tff7b72&& Te6edf3configTb4b4b4.Te6edf3bootstrap_only Tff7b72!== Tff7b72null Tff7b72&& Te6edf3configTb4b4b4.Te6edf3bootstrap_only Tff7b72!== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceBootstrapOnly Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3bootstrap_onlyTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3deviceTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceNetworkDevice Tff7b72= Te6edf3configTb4b4b4.Te6edf3deviceTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3prefer_ipv6 Tff7b72!== Tff7b72undefinedTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfacePreferIPV6 Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3prefer_ipv6Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3connectable Tff7b72!== Tff7b72undefinedTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceConnectable Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3connectableTb4b4b4)Tb4b4b4;

T8b949e// RNode airtime / id callsign
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3airtime_limit_longTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceAirtimeLimitLong Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3airtime_limit_longTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3airtime_limit_shortTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceAirtimeLimitShort Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3airtime_limit_shortTb4b4b4)Tb4b4b4;

T8b949e// Advanced
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3modeTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3mode Tff7b72= Te6edf3configTb4b4b4.Te6edf3modeTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3bitrateTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3bitrate Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3bitrateTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3network_nameTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3network_name Tff7b72= Te6edf3configTb4b4b4.Te6edf3network_nameTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3passphraseTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3passphrase Tff7b72= Te6edf3configTb4b4b4.Te6edf3passphraseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3recursive_prs Tff7b72!== Tff7b72undefined Tff7b72&& Te6edf3configTb4b4b4.Te6edf3recursive_prs Tff7b72!== Tff7b72null Tff7b72&& Te6edf3configTb4b4b4.Te6edf3recursive_prs Tff7b72!== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3recursive_prs Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3recursive_prsTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(
Te6edf3configTb4b4b4.Te6edf3announces_from_internal Tff7b72!== Tff7b72undefined Tff7b72&&
Te6edf3configTb4b4b4.Te6edf3announces_from_internal Tff7b72!== Tff7b72null Tff7b72&&
Te6edf3configTb4b4b4.Te6edf3announces_from_internal Tff7b72!== Ta5d6ff""
Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3announces_from_internal Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3announces_from_internalTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(
Te6edf3configTb4b4b4.Te6edf3block_fast_flapping Tff7b72!== Tff7b72undefined Tff7b72&&
Te6edf3configTb4b4b4.Te6edf3block_fast_flapping Tff7b72!== Tff7b72null Tff7b72&&
Te6edf3configTb4b4b4.Te6edf3block_fast_flapping Tff7b72!== Ta5d6ff""
Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceBlockFastFlapping Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3block_fast_flappingTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3fast_flapping_block_timeTb4b4b4)
Tff7b72thisTb4b4b4.Te6edf3newInterfaceFastFlappingBlockTime Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3fast_flapping_block_timeTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3fast_flapping_thresholdTb4b4b4)
Tff7b72thisTb4b4b4.Te6edf3newInterfaceFastFlappingThreshold Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3fast_flapping_thresholdTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3fast_flapping_graceTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3newInterfaceFastFlappingGrace Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3fast_flapping_graceTb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3discoverable Tff7b72!== Tff7b72undefined Tff7b72&& Te6edf3configTb4b4b4.Te6edf3discoverable Tff7b72!== Tff7b72null Tff7b72&& Te6edf3configTb4b4b4.Te6edf3discoverable Tff7b72!== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discoverable Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3discoverableTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3discovery_nameTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_name Tff7b72= Te6edf3configTb4b4b4.Te6edf3discovery_nameTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3announce_intervalTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3announce_interval Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3announce_intervalTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3reachable_onTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3reachable_on Tff7b72= Te6edf3configTb4b4b4.Te6edf3reachable_onTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3discovery_stamp_valueTb4b4b4)
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_stamp_value Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3discovery_stamp_valueTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3discovery_encrypt Tff7b72!== Tff7b72undefinedTb4b4b4)
Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_encrypt Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3discovery_encryptTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3publish_ifac Tff7b72!== Tff7b72undefinedTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3publish_ifac Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3publish_ifacTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3latitudeTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3latitude Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3latitudeTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3longitudeTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3longitude Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3longitudeTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3heightTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3height Tff7b72= Tffa657NumberTb4b4b4(Te6edf3configTb4b4b4.Te6edf3heightTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3location_cmdTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3location_cmd Tff7b72= Tffa657StringTb4b4b4(Te6edf3configTb4b4b4.Te6edf3location_cmdTb4b4b4)Tb4b4b4;

Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff`Ta5d6ffImported configuration for "Tffd700${Te6edf3configTb4b4b4.Te6edf3nameTffd700}Ta5d6ff"Ta5d6ff`Tb4b4b4)Tb4b4b4;

T8b949e// clear input if applied
Tff7b72thisTb4b4b4.Te6edf3rawConfigInput Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3detectedConfigs Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3buildPayloadFromImportedConfigTb4b4b4(Te6edf3configTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3discoveryEnabled Tff7b72=
Te6edf3configTb4b4b4.Te6edf3discoverable Tff7b72!== Tff7b72undefined Tff7b72&& Te6edf3configTb4b4b4.Te6edf3discoverable Tff7b72!== Tff7b72null Tff7b72&& Te6edf3configTb4b4b4.Te6edf3discoverable Tff7b72!== Ta5d6ff""
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3discoverableTb4b4b4)
Tff7b72: Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3backboneConnector Tff7b72=
Te6edf3configTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"BackboneInterface" Tff7b72&&
Tffa657BooleanTb4b4b4(Te6edf3configTb4b4b4.Te6edf3remote Tff7b72|| Te6edf3configTb4b4b4.Te6edf3target_hostTb4b4b4) Tff7b72&&
Tff7b72!Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3listen_port Tff7b72!= Tff7b72null Tff7b72&& Tffa657StringTb4b4b4(Te6edf3configTb4b4b4.Te6edf3listen_portTb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72!== Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3bootstrapOnlyPayloadTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"TCPClientInterface" Tff7b72|| Te6edf3backboneConnectorTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(
Te6edf3configTb4b4b4.Te6edf3bootstrap_only Tff7b72!== Tff7b72undefined Tff7b72&&
Te6edf3configTb4b4b4.Te6edf3bootstrap_only Tff7b72!== Tff7b72null Tff7b72&&
Te6edf3configTb4b4b4.Te6edf3bootstrap_only Tff7b72!== Ta5d6ff""
Tb4b4b4) Tb4b4b4{
Te6edf3bootstrapOnlyPayload Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3bootstrap_onlyTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72const Te6edf3i2pPeers Tff7b72=
Te6edf3configTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"I2PInterface"
Tff7b72? Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3configTb4b4b4.Te6edf3i2p_peersTb4b4b4)
Tff7b72? Te6edf3configTb4b4b4.Te6edf3i2p_peersTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3pTb4b4b4) Tb4b4b4=> Tffa657StringTb4b4b4(Te6edf3pTb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3filterTb4b4b4(Tffa657BooleanTb4b4b4)
Tff7b72: Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3configTb4b4b4.Te6edf3peersTb4b4b4)
Tff7b72? Te6edf3configTb4b4b4.Te6edf3peersTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3pTb4b4b4) Tb4b4b4=> Tffa657StringTb4b4b4(Te6edf3pTb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3filterTb4b4b4(Tffa657BooleanTb4b4b4)
Tff7b72: Tb4b4b4[Tb4b4b4]
Tff7b72: Tff7b72undefinedTb4b4b4;
Tff7b72return Tb4b4b4{
Te6edf3allow_overwriting_interfaceTff7b72: Tff7b72falseTb4b4b4,
Te6edf3nameTff7b72: Te6edf3configTb4b4b4.Te6edf3nameTb4b4b4,
Te6edf3typeTff7b72: Te6edf3configTb4b4b4.Te6edf3typeTb4b4b4,
Te6edf3target_hostTff7b72: Te6edf3configTb4b4b4.Te6edf3target_host Tff7b72|| Te6edf3configTb4b4b4.Te6edf3remote Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3target_portTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3target_portTb4b4b4)Tb4b4b4,
Te6edf3transport_identityTff7b72: Te6edf3configTb4b4b4.Te6edf3transport_identity Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3peersTff7b72: Te6edf3i2pPeersTb4b4b4,
Te6edf3listen_ipTff7b72: Te6edf3configTb4b4b4.Te6edf3listen_ip Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3listen_portTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3listen_portTb4b4b4)Tb4b4b4,
Te6edf3portTff7b72: Te6edf3configTb4b4b4.Te6edf3port Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3frequencyTff7b72: Tff7b72thisTb4b4b4.Te6edf3parseRNodeFrequencyHzTb4b4b4(Te6edf3configTb4b4b4.Te6edf3frequencyTb4b4b4) Tff7b72?? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3frequencyTb4b4b4)Tb4b4b4,
Te6edf3bandwidthTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3bandwidthTb4b4b4)Tb4b4b4,
Te6edf3txpowerTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3txpowerTb4b4b4)Tb4b4b4,
Te6edf3spreadingfactorTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3spreadingfactorTb4b4b4)Tb4b4b4,
Te6edf3codingrateTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3codingrateTb4b4b4)Tb4b4b4,
Te6edf3commandTff7b72: Te6edf3configTb4b4b4.Te6edf3command Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3respawn_delayTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3respawn_delayTb4b4b4)Tb4b4b4,
Te6edf3discoverableTff7b72: Te6edf3discoveryEnabled Tff7b72? Ta5d6ff"yes" Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_nameTff7b72: Te6edf3discoveryEnabled Tff7b72? Te6edf3configTb4b4b4.Te6edf3discovery_name Tff7b72|| Te6edf3configTb4b4b4.Te6edf3name Tff7b72|| Tff7b72null Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3announce_intervalTff7b72: Te6edf3discoveryEnabled Tff7b72? Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3announce_intervalTb4b4b4) Tff7b72?? T79c0ff360Tb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3reachable_onTff7b72: Te6edf3discoveryEnabled Tff7b72? Te6edf3configTb4b4b4.Te6edf3reachable_on Tff7b72|| Te6edf3configTb4b4b4.Te6edf3target_host Tff7b72|| Tff7b72null Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_stamp_valueTff7b72: Te6edf3discoveryEnabled Tff7b72? Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3discovery_stamp_valueTb4b4b4) Tff7b72?? T79c0ff14Tb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_encryptTff7b72: Te6edf3discoveryEnabled
Tff7b72? Te6edf3configTb4b4b4.Te6edf3discovery_encrypt Tff7b72!== Tff7b72undefined
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3discovery_encryptTb4b4b4)
Tff7b72: Tff7b72false
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3publish_ifacTff7b72: Te6edf3discoveryEnabled
Tff7b72? Te6edf3configTb4b4b4.Te6edf3publish_ifac Tff7b72!== Tff7b72undefined
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3publish_ifacTb4b4b4)
Tff7b72: Tff7b72false
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3latitudeTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3latitudeTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3longitudeTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3longitudeTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3heightTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3heightTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3location_cmdTff7b72: Te6edf3discoveryEnabled
Tff7b72? Te6edf3configTb4b4b4.Te6edf3location_cmd
Tff7b72? Tffa657StringTb4b4b4(Te6edf3configTb4b4b4.Te6edf3location_cmdTb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Tff7b72null
Tff7b72: Tff7b72null
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_frequencyTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3discovery_frequencyTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_bandwidthTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3discovery_bandwidthTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_modulationTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3discovery_modulationTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3modeTff7b72: Te6edf3configTb4b4b4.Te6edf3mode Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3recursive_prsTff7b72:
Te6edf3configTb4b4b4.Te6edf3recursive_prs Tff7b72!== Tff7b72undefined Tff7b72&& Te6edf3configTb4b4b4.Te6edf3recursive_prs Tff7b72!== Tff7b72null Tff7b72&& Te6edf3configTb4b4b4.Te6edf3recursive_prs Tff7b72!== Ta5d6ff""
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3recursive_prsTb4b4b4)
Tff7b72: Tff7b72falseTb4b4b4,
Te6edf3announces_from_internalTff7b72:
Te6edf3configTb4b4b4.Te6edf3announces_from_internal Tff7b72!== Tff7b72undefined Tff7b72&&
Te6edf3configTb4b4b4.Te6edf3announces_from_internal Tff7b72!== Tff7b72null Tff7b72&&
Te6edf3configTb4b4b4.Te6edf3announces_from_internal Tff7b72!== Ta5d6ff""
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3announces_from_internalTb4b4b4)
Tff7b72: Tff7b72trueTb4b4b4,
Te6edf3bitrateTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3bitrateTb4b4b4)Tb4b4b4,
Te6edf3network_nameTff7b72: Te6edf3configTb4b4b4.Te6edf3network_name Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3passphraseTff7b72: Te6edf3configTb4b4b4.Te6edf3passphrase Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3forward_ipTff7b72: Te6edf3configTb4b4b4.Te6edf3forward_ip Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3forward_portTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3forward_portTb4b4b4)Tb4b4b4,
Te6edf3deviceTff7b72: Te6edf3configTb4b4b4.Te6edf3device Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3prefer_ipv6Tff7b72:
Te6edf3configTb4b4b4.Te6edf3prefer_ipv6 Tff7b72!== Tff7b72undefined Tff7b72&& Te6edf3configTb4b4b4.Te6edf3prefer_ipv6 Tff7b72!== Tff7b72null Tff7b72&& Te6edf3configTb4b4b4.Te6edf3prefer_ipv6 Tff7b72!== Ta5d6ff""
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3prefer_ipv6Tb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3block_fast_flappingTff7b72:
Te6edf3configTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"BackboneInterface" Tff7b72&&
Te6edf3configTb4b4b4.Te6edf3listen_port Tff7b72!= Tff7b72null Tff7b72&&
Tffa657StringTb4b4b4(Te6edf3configTb4b4b4.Te6edf3listen_portTb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72!== Ta5d6ff""
Tff7b72? Te6edf3configTb4b4b4.Te6edf3block_fast_flapping Tff7b72!== Tff7b72undefined Tff7b72&&
Te6edf3configTb4b4b4.Te6edf3block_fast_flapping Tff7b72!== Tff7b72null Tff7b72&&
Te6edf3configTb4b4b4.Te6edf3block_fast_flapping Tff7b72!== Ta5d6ff""
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3block_fast_flappingTb4b4b4)
Tff7b72: Tff7b72true
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3fast_flapping_block_timeTff7b72:
Te6edf3configTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"BackboneInterface" Tff7b72&&
Te6edf3configTb4b4b4.Te6edf3listen_port Tff7b72!= Tff7b72null Tff7b72&&
Tffa657StringTb4b4b4(Te6edf3configTb4b4b4.Te6edf3listen_portTb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72!== Ta5d6ff""
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3fast_flapping_block_timeTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3fast_flapping_thresholdTff7b72:
Te6edf3configTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"BackboneInterface" Tff7b72&&
Te6edf3configTb4b4b4.Te6edf3listen_port Tff7b72!= Tff7b72null Tff7b72&&
Tffa657StringTb4b4b4(Te6edf3configTb4b4b4.Te6edf3listen_portTb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72!== Ta5d6ff""
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3fast_flapping_thresholdTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3fast_flapping_graceTff7b72:
Te6edf3configTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"BackboneInterface" Tff7b72&&
Te6edf3configTb4b4b4.Te6edf3listen_port Tff7b72!= Tff7b72null Tff7b72&&
Tffa657StringTb4b4b4(Te6edf3configTb4b4b4.Te6edf3listen_portTb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72!== Ta5d6ff""
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3fast_flapping_graceTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3kiss_framingTff7b72:
Te6edf3configTb4b4b4.Te6edf3kiss_framing Tff7b72!== Tff7b72undefined Tff7b72&& Te6edf3configTb4b4b4.Te6edf3kiss_framing Tff7b72!== Tff7b72null Tff7b72&& Te6edf3configTb4b4b4.Te6edf3kiss_framing Tff7b72!== Ta5d6ff""
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3kiss_framingTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3i2p_tunneledTff7b72:
Te6edf3configTb4b4b4.Te6edf3i2p_tunneled Tff7b72!== Tff7b72undefined Tff7b72&& Te6edf3configTb4b4b4.Te6edf3i2p_tunneled Tff7b72!== Tff7b72null Tff7b72&& Te6edf3configTb4b4b4.Te6edf3i2p_tunneled Tff7b72!== Ta5d6ff""
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3i2p_tunneledTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3connect_timeoutTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3connect_timeoutTb4b4b4)Tb4b4b4,
Te6edf3max_reconnect_triesTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3max_reconnect_triesTb4b4b4)Tb4b4b4,
Te6edf3fixed_mtuTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3fixed_mtuTb4b4b4)Tb4b4b4,
Te6edf3connectableTff7b72:
Te6edf3configTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"I2PInterface"
Tff7b72? Te6edf3configTb4b4b4.Te6edf3connectable Tff7b72!== Tff7b72undefined Tff7b72&& Te6edf3configTb4b4b4.Te6edf3connectable Tff7b72!== Tff7b72null Tff7b72&& Te6edf3configTb4b4b4.Te6edf3connectable Tff7b72!== Ta5d6ff""
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3connectableTb4b4b4)
Tff7b72: Tff7b72true
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3group_idTff7b72: Te6edf3configTb4b4b4.Te6edf3group_id Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3multicast_address_typeTff7b72: Te6edf3configTb4b4b4.Te6edf3multicast_address_type Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3devicesTff7b72: Te6edf3configTb4b4b4.Te6edf3devices Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3ignored_devicesTff7b72: Te6edf3configTb4b4b4.Te6edf3ignored_devices Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3discovery_scopeTff7b72: Te6edf3configTb4b4b4.Te6edf3discovery_scope Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3discovery_portTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3discovery_portTb4b4b4)Tb4b4b4,
Te6edf3data_portTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3data_portTb4b4b4)Tb4b4b4,
Te6edf3configured_bitrateTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3configured_bitrateTb4b4b4)Tb4b4b4,
Te6edf3callsignTff7b72: Te6edf3configTb4b4b4.Te6edf3callsign Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3id_callsignTff7b72: Te6edf3configTb4b4b4.Te6edf3id_callsign Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3id_intervalTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3id_intervalTb4b4b4)Tb4b4b4,
Te6edf3ssidTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3ssidTb4b4b4)Tb4b4b4,
Te6edf3airtime_limit_longTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3airtime_limit_longTb4b4b4)Tb4b4b4,
Te6edf3airtime_limit_shortTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3airtime_limit_shortTb4b4b4)Tb4b4b4,
Te6edf3speedTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3speedTb4b4b4)Tb4b4b4,
Te6edf3databitsTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3databitsTb4b4b4)Tb4b4b4,
Te6edf3parityTff7b72: Te6edf3configTb4b4b4.Te6edf3parity Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3stopbitsTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3stopbitsTb4b4b4)Tb4b4b4,
Te6edf3preambleTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3preambleTb4b4b4)Tb4b4b4,
Te6edf3txtailTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3txtailTb4b4b4)Tb4b4b4,
Te6edf3persistenceTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3persistenceTb4b4b4)Tb4b4b4,
Te6edf3slottimeTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Te6edf3configTb4b4b4.Te6edf3slottimeTb4b4b4)Tb4b4b4,
Te6edf3flow_controlTff7b72:
Te6edf3configTb4b4b4.Te6edf3flow_control Tff7b72!== Tff7b72undefined Tff7b72&& Te6edf3configTb4b4b4.Te6edf3flow_control Tff7b72!== Tff7b72null Tff7b72&& Te6edf3configTb4b4b4.Te6edf3flow_control Tff7b72!== Ta5d6ff""
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3parseBoolTb4b4b4(Te6edf3configTb4b4b4.Te6edf3flow_controlTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3bootstrap_onlyTff7b72: Te6edf3bootstrapOnlyPayloadTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3applyDiscoveredInterfacePrefillTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72let Te6edf3prefill Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3sessionStorage Tff7b72!== Ta5d6ff"undefined"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3raw Tff7b72= Te6edf3sessionStorageTb4b4b4.Te6edf3getItemTb4b4b4(Ta5d6ff"meshchatx.discoveredInterfacePrefill"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3rawTb4b4b4) Tb4b4b4{
Te6edf3prefill Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3rawTb4b4b4)Tb4b4b4;
Te6edf3sessionStorageTb4b4b4.Te6edf3removeItemTb4b4b4(Ta5d6ff"meshchatx.discoveredInterfacePrefill"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3prefillTb4b4b4) Tff7b72returnTb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3prefillTb4b4b4.Te6edf3config_entryTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3rawConfigInput Tff7b72= Te6edf3prefillTb4b4b4.Te6edf3config_entryTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3handleRawConfigInputTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3config Tff7b72= Tb4b4b4{
Te6edf3nameTff7b72: Te6edf3prefillTb4b4b4.Te6edf3name Tff7b72|| Ta5d6ff"Discovered Interface"Tb4b4b4,
Te6edf3typeTff7b72: Te6edf3prefillTb4b4b4.Te6edf3type Tff7b72|| Ta5d6ff"BackboneInterface"Tb4b4b4,
Te6edf3target_hostTff7b72: Te6edf3prefillTb4b4b4.Te6edf3target_host Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3target_portTff7b72: Te6edf3prefillTb4b4b4.Te6edf3target_port Tff7b72!= Tff7b72null Tff7b72? Tffa657StringTb4b4b4(Te6edf3prefillTb4b4b4.Te6edf3target_portTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3transport_identityTff7b72: Te6edf3prefillTb4b4b4.Te6edf3transport_identity Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3network_nameTff7b72: Te6edf3prefillTb4b4b4.Te6edf3network_name Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3passphraseTff7b72: Te6edf3prefillTb4b4b4.Te6edf3passphrase Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3frequencyTff7b72: Te6edf3prefillTb4b4b4.Te6edf3frequency Tff7b72?? Tff7b72nullTb4b4b4,
Te6edf3bandwidthTff7b72: Te6edf3prefillTb4b4b4.Te6edf3bandwidth Tff7b72?? Tff7b72nullTb4b4b4,
Te6edf3spreadingfactorTff7b72: Te6edf3prefillTb4b4b4.Te6edf3spreadingfactor Tff7b72?? Tff7b72nullTb4b4b4,
Te6edf3codingrateTff7b72: Te6edf3prefillTb4b4b4.Te6edf3codingrate Tff7b72?? Tff7b72nullTb4b4b4,
Te6edf3latitudeTff7b72: Te6edf3prefillTb4b4b4.Te6edf3latitude Tff7b72?? Tff7b72nullTb4b4b4,
Te6edf3longitudeTff7b72: Te6edf3prefillTb4b4b4.Te6edf3longitude Tff7b72?? Tff7b72nullTb4b4b4,
Te6edf3heightTff7b72: Te6edf3prefillTb4b4b4.Te6edf3height Tff7b72?? Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3applyConfigTb4b4b4(Te6edf3configTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.discovered_prefill_applied"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3quickAddInterfaceFromConfigTb4b4b4(Te6edf3configTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3config Tff7b72|| Tff7b72!Te6edf3configTb4b4b4.Te6edf3type Tff7b72|| Tff7b72!Te6edf3configTb4b4b4.Te6edf3name Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isSavingTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3configTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"I2PInterface"Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.i2p_import_forbidden"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3isSaving Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(
Ta5d6ff`Ta5d6ff/api/v1/reticulum/interfaces/addTa5d6ff`Tb4b4b4,
Tff7b72thisTb4b4b4.Te6edf3buildPayloadFromImportedConfigTb4b4b4(Te6edf3configTb4b4b4)
Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Ta5d6ff`Ta5d6ffImported interface "Tffd700${Te6edf3configTb4b4b4.Te6edf3nameTffd700}Ta5d6ff"Ta5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3GlobalStateTb4b4b4.Te6edf3hasPendingInterfaceChanges Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3GlobalStateTb4b4b4.Te6edf3modifiedInterfaceNamesTb4b4b4.Te6edf3addTb4b4b4(Te6edf3configTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3rawConfigInput Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3detectedConfigs Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff"interfaces" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3message Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72?? Ta5d6ff`Ta5d6ffFailed to import "Tffd700${Te6edf3configTb4b4b4.Te6edf3nameTffd700}Ta5d6ff"Ta5d6ff`Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isSaving Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3validateFixedMtuOrWarnTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72!== Ta5d6ff"TCPClientInterface"Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3mtu Tff7b72= Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceFixedMTUTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3mtu Tff7b72== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3mtu Tff7b72< Tff7b72thisTb4b4b4.Te6edf3reticulumMinFixedMtuTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.fixed_mtu_min"Tb4b4b4, Tb4b4b4{
Te6edf3minTff7b72: Tff7b72thisTb4b4b4.Te6edf3reticulumMinFixedMtuTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3saveInterfaceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isSavingTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isSaving Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3discoveryEnabled Tff7b72= Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discoverable Tff7b72=== Tff7b72trueTb4b4b4;
Tff7b72const Te6edf3freqHz Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3calculateFrequencyInHzTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3validateFixedMtuOrWarnTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"I2PInterface" Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3canAddI2PInterfaceTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(
Tff7b72!Tff7b72thisTb4b4b4.Te6edf3transportEnabled
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.i2p_transport_required"Tb4b4b4)
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.i2p_already_exists"Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"RNodeInterface" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseBleTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3raw Tff7b72= Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeBlePeer Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3inner Tff7b72= Te6edf3rawTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"ble://"Tb4b4b4) Tff7b72? Te6edf3rawTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff6Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72: Te6edf3rawTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3innerTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3warningTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.rnode_ble_peer_required"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72if Tb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"RNodeIPInterface" Tff7b72||
Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"RNodeInterface" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseIPTb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3buildRNodeTcpPortTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.rnode_tcp_host_required"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"TCPServerInterface" Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"UDPInterface"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3lip Tff7b72= Tffa657StringTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceListenIp Tff7b72?? Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3lipTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.listen_ip_required"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"HTTPInterface"Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpTunnelMode Tff7b72=== Ta5d6ff"client"Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpServerUrl Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_server_url_required"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpListenPort Tff7b72== Tff7b72null Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpListenPort Tff7b72=== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.http_tunnel_listen_port_required"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"__external__"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3typeStr Tff7b72= Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3customExternalTypeName Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3typeStrTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.custom_external_type_required"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3extra Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3extra Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3customExternalOptionsJson Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Ta5d6ff"{}"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.custom_external_json_invalid"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3extra Tff7b72!== Tff7b72null Tff7b72&& Tff7b72typeof Te6edf3extra Tff7b72!== Ta5d6ff"object"Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.custom_external_json_invalid"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3payload Tff7b72= Tb4b4b4{
Te6edf3allow_overwriting_interfaceTff7b72: Tff7b72thisTb4b4b4.Te6edf3isEditingInterfaceTb4b4b4,
Te6edf3nameTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceNameTb4b4b4,
Te6edf3typeTff7b72: Te6edf3typeStrTb4b4b4,
Te6edf3extra_configTff7b72: Te6edf3extraTb4b4b4,
Te6edf3discoverableTff7b72: Te6edf3discoveryEnabled Tff7b72? Ta5d6ff"yes" Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_nameTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_name Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3announce_intervalTff7b72: Te6edf3discoveryEnabled
Tff7b72? Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3announce_intervalTb4b4b4) Tff7b72?? T79c0ff360Tb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3reachable_onTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3reachable_on Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_stamp_valueTff7b72: Te6edf3discoveryEnabled
Tff7b72? Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_stamp_valueTb4b4b4) Tff7b72?? T79c0ff14Tb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_encryptTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_encrypt Tff7b72=== Tff7b72true Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3publish_ifacTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3publish_ifac Tff7b72=== Tff7b72true Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3latitudeTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3latitudeTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3longitudeTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3longitudeTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3heightTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3heightTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3location_cmdTff7b72: Te6edf3discoveryEnabled Tff7b72? Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3location_cmd Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Tff7b72null Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_frequencyTff7b72: Te6edf3discoveryEnabled
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_frequencyTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_bandwidthTff7b72: Te6edf3discoveryEnabled
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_bandwidthTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_modulationTff7b72: Te6edf3discoveryEnabled
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_modulationTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3modeTff7b72: Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3mode Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3recursive_prsTff7b72: Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3recursive_prs Tff7b72=== Tff7b72trueTb4b4b4,
Te6edf3announces_from_internalTff7b72: Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3announces_from_internal Tff7b72!== Tff7b72falseTb4b4b4,
Te6edf3bitrateTff7b72: Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3bitrateTb4b4b4,
Te6edf3network_nameTff7b72: Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3network_nameTb4b4b4,
Te6edf3passphraseTff7b72: Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3passphraseTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/reticulum/interfaces/addTa5d6ff`Tb4b4b4, Te6edf3payloadTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3messageTb4b4b4) Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3messageTb4b4b4)Tb4b4b4;
Te6edf3GlobalStateTb4b4b4.Te6edf3hasPendingInterfaceChanges Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3GlobalStateTb4b4b4.Te6edf3modifiedInterfaceNamesTb4b4b4.Te6edf3addTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceNameTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff"interfaces" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3i2pPeers Tff7b72=
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"I2PInterface"
Tff7b72? Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3I2PSettingsTb4b4b4.Te6edf3newInterfacePeers Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3pTb4b4b4) Tb4b4b4=> Tffa657StringTb4b4b4(Te6edf3pTb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3filterTb4b4b4(Tffa657BooleanTb4b4b4)
Tff7b72: Tff7b72undefinedTb4b4b4;

Tff7b72const Te6edf3isBackboneListener Tff7b72=
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"BackboneInterface" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3newInterfaceBackboneListenMode Tff7b72=== Tff7b72trueTb4b4b4;

Tff7b72const Te6edf3payload Tff7b72= Tb4b4b4{
Te6edf3allow_overwriting_interfaceTff7b72: Tff7b72thisTb4b4b4.Te6edf3isEditingInterfaceTb4b4b4,
Te6edf3nameTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceNameTb4b4b4,
Te6edf3typeTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceTypeTb4b4b4,
Te6edf3target_hostTff7b72: Te6edf3isBackboneListener Tff7b72? Tff7b72null Tff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceTargetHostTb4b4b4,
Te6edf3target_portTff7b72: Te6edf3isBackboneListener Tff7b72? Tff7b72null Tff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceTargetPortTb4b4b4,
Te6edf3transport_identityTff7b72: Te6edf3isBackboneListener Tff7b72? Tff7b72null Tff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceTransportIdentityTb4b4b4,
Te6edf3peersTff7b72: Te6edf3i2pPeersTb4b4b4,
Te6edf3listen_ipTff7b72: Te6edf3isBackboneListener
Tff7b72? Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceBackboneListenIp Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Tff7b72null
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"TCPServerInterface" Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"UDPInterface"
Tff7b72? Tffa657StringTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceListenIp Tff7b72?? Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceListenIpTb4b4b4,
Te6edf3listen_portTff7b72: Te6edf3isBackboneListener
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3newInterfaceBackboneListenPort Tff7b72|| Tff7b72null
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"HTTPInterface" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpTunnelMode Tff7b72=== Ta5d6ff"server"
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpListenPort
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceListenPortTb4b4b4,
Te6edf3forward_ipTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceForwardIpTb4b4b4,
Te6edf3forward_portTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceForwardPortTb4b4b4,
Te6edf3deviceTff7b72: Te6edf3isBackboneListener
Tff7b72? Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceBackboneListenDevice Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Tff7b72null
Tff7b72: Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceNetworkDevice Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3prefer_ipv6Tff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfacePreferIPV6 Tff7b72=== Tff7b72trueTb4b4b4,
Te6edf3block_fast_flappingTff7b72: Te6edf3isBackboneListener Tff7b72? Tff7b72thisTb4b4b4.Te6edf3newInterfaceBlockFastFlapping Tff7b72=== Tff7b72true Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3fast_flapping_block_timeTff7b72: Te6edf3isBackboneListener
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceFastFlappingBlockTimeTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3fast_flapping_thresholdTff7b72: Te6edf3isBackboneListener
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceFastFlappingThresholdTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3fast_flapping_graceTff7b72: Te6edf3isBackboneListener Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceFastFlappingGraceTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3kiss_framingTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceKISSFramingEnabled Tff7b72=== Tff7b72trueTb4b4b4,
Te6edf3i2p_tunneledTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceI2PTunnelingEnabled Tff7b72=== Tff7b72trueTb4b4b4,
Te6edf3connect_timeoutTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceConnectTimeoutTb4b4b4)Tb4b4b4,
Te6edf3max_reconnect_triesTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceMaxReconnectTriesTb4b4b4)Tb4b4b4,
Te6edf3fixed_mtuTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceFixedMTUTb4b4b4)Tb4b4b4,
Te6edf3bootstrap_onlyTff7b72:
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"TCPClientInterface" Tff7b72||
Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"BackboneInterface" Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3newInterfaceBackboneListenModeTb4b4b4)
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3newInterfaceBootstrapOnly Tff7b72=== Tff7b72true
Tff7b72: Tff7b72undefinedTb4b4b4,
Te6edf3connectableTff7b72:
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"I2PInterface" Tff7b72? Tff7b72thisTb4b4b4.Te6edf3newInterfaceConnectable Tff7b72=== Tff7b72true Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3portTff7b72:
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"RNodeIPInterface" Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseIP
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3buildRNodeTcpPortTb4b4b4(Tb4b4b4)
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceRNodeUseBle
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3effectiveRNodeBlePortTb4b4b4(Tb4b4b4)
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfacePortTb4b4b4,
Te6edf3frequencyTff7b72: Te6edf3freqHzTb4b4b4,
Te6edf3bandwidthTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceBandwidthTb4b4b4,
Te6edf3txpowerTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceTxpowerTb4b4b4,
Te6edf3spreadingfactorTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceSpreadingFactorTb4b4b4,
Te6edf3codingrateTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceCodingRateTb4b4b4,
Te6edf3flow_controlTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceFlowControl Tff7b72=== Tff7b72trueTb4b4b4,
Te6edf3callsignTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceCallsignTb4b4b4,
Te6edf3id_callsignTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceIDCallsignTb4b4b4,
Te6edf3id_intervalTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceIDIntervalTb4b4b4)Tb4b4b4,
Te6edf3airtime_limit_longTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceAirtimeLimitLongTb4b4b4)Tb4b4b4,
Te6edf3airtime_limit_shortTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceAirtimeLimitShortTb4b4b4)Tb4b4b4,
Te6edf3ssidTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceSSIDTb4b4b4)Tb4b4b4,
Te6edf3speedTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceSpeedTb4b4b4)Tb4b4b4,
Te6edf3databitsTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceDatabitsTb4b4b4)Tb4b4b4,
Te6edf3parityTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceParityTb4b4b4,
Te6edf3stopbitsTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceStopbitsTb4b4b4)Tb4b4b4,
Te6edf3preambleTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfacePreambleTb4b4b4)Tb4b4b4,
Te6edf3txtailTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceTXTailTb4b4b4)Tb4b4b4,
Te6edf3persistenceTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfacePersistenceTb4b4b4)Tb4b4b4,
Te6edf3slottimeTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceSlotTimeTb4b4b4)Tb4b4b4,
Te6edf3group_idTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceGroupIDTb4b4b4,
Te6edf3multicast_address_typeTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceMulticastAddressTypeTb4b4b4,
Te6edf3devicesTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceDevicesTb4b4b4,
Te6edf3ignored_devicesTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceIgnoredDevicesTb4b4b4,
Te6edf3discovery_scopeTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceDiscoveryScopeTb4b4b4,
Te6edf3discovery_portTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceDiscoveryPortTb4b4b4)Tb4b4b4,
Te6edf3data_portTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceDataPortTb4b4b4)Tb4b4b4,
Te6edf3configured_bitrateTff7b72: Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceConfiguredBitrateTb4b4b4)Tb4b4b4,
Te6edf3commandTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceCommandTb4b4b4,
Te6edf3respawn_delayTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceRespawnDelayTb4b4b4,
Te6edf3server_urlTff7b72:
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"HTTPInterface" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpTunnelMode Tff7b72=== Ta5d6ff"client"
Tff7b72? Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpServerUrl Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Tff7b72null
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3poll_intervalTff7b72:
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"HTTPInterface" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpTunnelMode Tff7b72=== Ta5d6ff"client"
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpPollIntervalTb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3listen_hostTff7b72:
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"HTTPInterface" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpTunnelMode Tff7b72=== Ta5d6ff"server"
Tff7b72? Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpListenHost Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Ta5d6ff"0.0.0.0"
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3mtuTff7b72: Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"HTTPInterface" Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpMtuTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3http_versionTff7b72:
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"HTTPInterface" Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpVersionTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3user_agentTff7b72:
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"HTTPInterface"
Tff7b72? Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpUserAgent Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Tff7b72null
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3check_user_agentTff7b72:
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"HTTPInterface" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpTunnelMode Tff7b72=== Ta5d6ff"server"
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpCheckUserAgent Tff7b72=== Tff7b72true
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3tls_verifyTff7b72:
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"HTTPInterface" Tff7b72? Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpTlsVerify Tff7b72=== Tff7b72true Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3tls_certfileTff7b72:
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"HTTPInterface"
Tff7b72? Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpTlsCertfile Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Tff7b72null
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3tls_keyfileTff7b72:
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"HTTPInterface"
Tff7b72? Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpTlsKeyfile Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Tff7b72null
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discoverableTff7b72: Te6edf3discoveryEnabled Tff7b72? Ta5d6ff"yes" Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_nameTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_name Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3announce_intervalTff7b72: Te6edf3discoveryEnabled
Tff7b72? Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3announce_intervalTb4b4b4) Tff7b72?? T79c0ff360Tb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3reachable_onTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3reachable_on Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_stamp_valueTff7b72: Te6edf3discoveryEnabled
Tff7b72? Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_stamp_valueTb4b4b4) Tff7b72?? T79c0ff14Tb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_encryptTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_encrypt Tff7b72=== Tff7b72true Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3publish_ifacTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3publish_ifac Tff7b72=== Tff7b72true Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3latitudeTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3latitudeTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3longitudeTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3longitudeTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3heightTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3heightTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3location_cmdTff7b72: Te6edf3discoveryEnabled Tff7b72? Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3location_cmd Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Tff7b72null Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_frequencyTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_frequencyTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_bandwidthTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_bandwidthTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3discovery_modulationTff7b72: Te6edf3discoveryEnabled Tff7b72? Tff7b72thisTb4b4b4.Te6edf3numOrNullTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoveryTb4b4b4.Te6edf3discovery_modulationTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3modeTff7b72:
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"HTTPInterface"
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3newInterfaceHttpTunnelMode Tff7b72|| Ta5d6ff"client"
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3mode Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3recursive_prsTff7b72: Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3recursive_prs Tff7b72=== Tff7b72trueTb4b4b4,
Te6edf3announces_from_internalTff7b72: Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3announces_from_internal Tff7b72!== Tff7b72falseTb4b4b4,
Te6edf3bitrateTff7b72: Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3bitrateTb4b4b4,
Te6edf3network_nameTff7b72: Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3network_nameTb4b4b4,
Te6edf3passphraseTff7b72: Tff7b72thisTb4b4b4.Te6edf3sharedInterfaceSettingsTb4b4b4.Te6edf3passphraseTb4b4b4,
Tb4b4b4}Tb4b4b4;

Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/reticulum/interfaces/addTa5d6ff`Tb4b4b4, Te6edf3payloadTb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3messageTb4b4b4) Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3messageTb4b4b4)Tb4b4b4;
Te6edf3GlobalStateTb4b4b4.Te6edf3hasPendingInterfaceChanges Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3GlobalStateTb4b4b4.Te6edf3modifiedInterfaceNamesTb4b4b4.Te6edf3addTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newInterfaceNameTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff"interfaces" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3message Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72?? Ta5d6ff"Failed to save interface connection."Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isSaving Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3calculateFrequencyInHzTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3RNodeGHzValue Tff7b72* T79c0ff1e9 Tff7b72+ Tff7b72thisTb4b4b4.Te6edf3RNodeMHzValue Tff7b72* T79c0ff1e6 Tff7b72+ Tff7b72thisTb4b4b4.Te6edf3RNodekHzValue Tff7b72* T79c0ff1e3Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3updateRNodeCalculationsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3calculateRNodeParametersTb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3newInterfaceBandwidthTb4b4b4,
Tff7b72thisTb4b4b4.Te6edf3newInterfaceSpreadingFactorTb4b4b4,
Tff7b72thisTb4b4b4.Te6edf3newInterfaceCodingRateTb4b4b4,
Tff7b72thisTb4b4b4.Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3noiseFloorTb4b4b4,
Tff7b72thisTb4b4b4.Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3antennaGainTb4b4b4,
Tff7b72thisTb4b4b4.Te6edf3newInterfaceTxpower
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3calculateRNodeParametersTb4b4b4(Te6edf3bandwidthTb4b4b4, Te6edf3spreadingFactorTb4b4b4, Te6edf3codingRateTb4b4b4, Te6edf3noiseFloorTb4b4b4, Te6edf3antennaGainTb4b4b4, Te6edf3transmitPowerTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3bandwidth Tff7b72|| Tff7b72!Te6edf3spreadingFactor Tff7b72|| Tff7b72!Te6edf3codingRateTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3crn Tff7b72= Tb4b4b4{ T79c0ff5Tff7b72: T79c0ff1Tb4b4b4, T79c0ff6Tff7b72: T79c0ff2Tb4b4b4, T79c0ff7Tff7b72: T79c0ff3Tb4b4b4, T79c0ff8Tff7b72: T79c0ff4 Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3cr Tff7b72= Te6edf3crnTb4b4b4[Te6edf3codingRateTb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3sfn Tff7b72= Tb4b4b4{ T79c0ff5Tff7b72: Tff7b72-T79c0ff2.5Tb4b4b4, T79c0ff6Tff7b72: Tff7b72-T79c0ff5Tb4b4b4, T79c0ff7Tff7b72: Tff7b72-T79c0ff7.5Tb4b4b4, T79c0ff8Tff7b72: Tff7b72-T79c0ff10Tb4b4b4, T79c0ff9Tff7b72: Tff7b72-T79c0ff12.5Tb4b4b4, T79c0ff10Tff7b72: Tff7b72-T79c0ff15Tb4b4b4, T79c0ff11Tff7b72: Tff7b72-T79c0ff17.5Tb4b4b4, T79c0ff12Tff7b72: Tff7b72-T79c0ff20 Tb4b4b4}Tb4b4b4;
Tff7b72let Te6edf3dataRate Tff7b72=
Te6edf3spreadingFactor Tff7b72* Tb4b4b4(T79c0ff4 Tff7b72/ Tb4b4b4(T79c0ff4 Tff7b72+ Te6edf3crTb4b4b4) Tff7b72/ Tb4b4b4(Tffa657MathTb4b4b4.Te6edf3powTb4b4b4(T79c0ff2Tb4b4b4, Te6edf3spreadingFactorTb4b4b4) Tff7b72/ Tb4b4b4(Te6edf3bandwidth Tff7b72/ T79c0ff1000Tb4b4b4)Tb4b4b4)Tb4b4b4) Tff7b72* T79c0ff1000Tb4b4b4;
Tff7b72let Te6edf3sensitivity Tff7b72= Tff7b72-T79c0ff174 Tff7b72+ T79c0ff10 Tff7b72* Tffa657MathTb4b4b4.Te6edf3log10Tb4b4b4(Te6edf3bandwidthTb4b4b4) Tff7b72+ Te6edf3noiseFloor Tff7b72+ Tb4b4b4(Te6edf3sfnTb4b4b4[Te6edf3spreadingFactorTb4b4b4] Tff7b72|| T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3bandwidth Tff7b72=== T79c0ff203125 Tff7b72|| Te6edf3bandwidth Tff7b72=== T79c0ff406250 Tff7b72|| Te6edf3bandwidth Tff7b72> T79c0ff500000Tb4b4b4) Tb4b4b4{
Te6edf3sensitivity Tff7b72= Tff7b72-T79c0ff165.6 Tff7b72+ T79c0ff10 Tff7b72* Tffa657MathTb4b4b4.Te6edf3log10Tb4b4b4(Te6edf3bandwidthTb4b4b4) Tff7b72+ Te6edf3noiseFloor Tff7b72+ Tb4b4b4(Te6edf3sfnTb4b4b4[Te6edf3spreadingFactorTb4b4b4] Tff7b72|| T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3linkBudget Tff7b72= Te6edf3transmitPower Tff7b72- Te6edf3sensitivity Tff7b72+ Te6edf3antennaGainTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3dataRate Tff7b72=
Te6edf3dataRate Tff7b72< T79c0ff1000 Tff7b72? Ta5d6ff`Tffd700${Te6edf3dataRateTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff0Tb4b4b4)Tffd700}Ta5d6ff bpsTa5d6ff` Tff7b72: Ta5d6ff`Tffd700${Tb4b4b4(Te6edf3dataRate Tff7b72/ T79c0ff1000Tb4b4b4)Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff2Tb4b4b4)Tffd700}Ta5d6ff kbpsTa5d6ff`Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3linkBudget Tff7b72= Ta5d6ff`Tffd700${Te6edf3linkBudgetTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff1Tb4b4b4)Tffd700}Ta5d6ff dBTa5d6ff`Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3RNodeInterfaceLoRaParametersTb4b4b4.Te6edf3sensitivity Tff7b72= Ta5d6ff`Tffd700${Te6edf3sensitivityTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff1Tb4b4b4)Tffd700}Ta5d6ff dBmTa5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3addI2PPeerTb4b4b4(Te6edf3address Tff7b72= Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3I2PSettingsTb4b4b4.Te6edf3newInterfacePeersTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3addressTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3removeI2PPeerTb4b4b4(Te6edf3indexTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3I2PSettingsTb4b4b4.Te6edf3newInterfacePeersTb4b4b4.Te6edf3spliceTb4b4b4(Te6edf3indexTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3addSubInterfaceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3RNodeMultiInterfaceTb4b4b4.Te6edf3subInterfacesTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3frequencyTff7b72: Tff7b72nullTb4b4b4,
Te6edf3bandwidthTff7b72: Tff7b72nullTb4b4b4,
Te6edf3txpowerTff7b72: Tff7b72nullTb4b4b4,
Te6edf3spreadingfactorTff7b72: Tff7b72nullTb4b4b4,
Te6edf3codingrateTff7b72: Tff7b72nullTb4b4b4,
Te6edf3vportTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3useKISSAX25Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=
Tff7b72thisTb4b4b4.Te6edf3newInterfaceType Tff7b72=== Ta5d6ff"AX25KISSInterface" Tff7b72? Ta5d6ff"KISSInterface" Tff7b72: Ta5d6ff"AX25KISSInterface"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3removeSubInterfaceTb4b4b4(Te6edf3idxTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3RNodeMultiInterfaceTb4b4b4.Te6edf3subInterfacesTb4b4b4.Te6edf3spliceTb4b4b4(Te6edf3idxTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isDedicatedFormInterfaceTypeTb4b4b4(Te6edf3tTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3builtin Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4[
Ta5d6ff"TCPClientInterface"Tb4b4b4,
Ta5d6ff"BackboneInterface"Tb4b4b4,
Ta5d6ff"I2PInterface"Tb4b4b4,
Ta5d6ff"TCPServerInterface"Tb4b4b4,
Ta5d6ff"UDPInterface"Tb4b4b4,
Ta5d6ff"RNodeInterface"Tb4b4b4,
Ta5d6ff"RNodeIPInterface"Tb4b4b4,
Ta5d6ff"RNodeMultiInterface"Tb4b4b4,
Ta5d6ff"SerialInterface"Tb4b4b4,
Ta5d6ff"KISSInterface"Tb4b4b4,
Ta5d6ff"AX25KISSInterface"Tb4b4b4,
Ta5d6ff"PipeInterface"Tb4b4b4,
Ta5d6ff"AutoInterface"Tb4b4b4,
Ta5d6ff"LocalInterface"Tb4b4b4,
Ta5d6ff"HTTPInterface"Tb4b4b4,
Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3builtinTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3tTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>

Tb4b4b4<Tff7b72style Te6edf3scopedTb4b4b4>
Tb4b4b4@Tff7b72reference Ta5d6ff"../../style.css"Tb4b4b4;
Tb4b4b4.T56d364glass-card Tb4b4b4{
@apply bg-white/95 Te6edf3darkTb4b4b4:Te6edf3bg-zinc-900Tff7b72/T79c0ff85 Te6edf3backdrop-blur-sm Tff7b72border Tff7b72borderTff7b72-Tff7b72grayT79c0ff-200 Te6edf3darkTff7b72:Tff7b72borderTff7b72-Te6edf3zinc-800 Te6edf3rounded-3xl Te6edf3shadow-xl Te6edf3p-6Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364input-field Tb4b4b4{
@apply bg-gray-50/90 Te6edf3darkTb4b4b4:Te6edf3bg-zinc-900Tff7b72/T79c0ff80 Tff7b72border Tff7b72borderTff7b72-Tff7b72grayT79c0ff-200 Te6edf3darkTff7b72:Tff7b72borderTff7b72-Te6edf3zinc-700 Tff7b72textTff7b72-Te6edf3sm Te6edf3rounded-2xl Te6edf3focusTff7b72:Te6edf3ring-2 Te6edf3focusTff7b72:Te6edf3ring-blue-400 Te6edf3focusTff7b72:Tff7b72borderTff7b72-Tff7b72blueT79c0ff-400 Te6edf3darkTff7b72:Te6edf3focusTff7b72:Te6edf3ring-blue-500 Te6edf3darkTff7b72:Te6edf3focusTff7b72:Tff7b72borderTff7b72-Tff7b72blueT79c0ff-500 Tff7b72block Te6edf3w-full Te6edf3p-2T79c0ff.5 Tff7b72textTff7b72-Tff7b72grayT79c0ff-900 Te6edf3darkTff7b72:Tff7b72textTff7b72-Tff7b72grayT79c0ff-100 Tff7b72transitionTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364glass-label Tb4b4b4{
@apply mb-1.5 block text-xs uppercase font-bold text-gray-500 Te6edf3darkTb4b4b4:Tff7b72textTff7b72-Te6edf3zinc-400 Te6edf3tracking-widerTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364glass-field Tb4b4b4{
@apply space-y-1Tb4b4b4;
Tb4b4b4}
Tb4b4b4<Tb4b4b4/Tff7b72styleTb4b4b4>


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────